WeChat 애플릿의 API 구현은 모든 측면을 고려해야 하므로 콜백 작성 방법이 계속 사용됩니다.
우리 모두 알고 있듯이 Callback-Hell은 전통적인 JS 구문의 역사적인 문제입니다. 그러나 결국 편리한 도구는 개발 효율성의 원천이므로 저자는 WeChat 애플릿 API의 현재 버전인 weapp을 간단하게 캡슐화했습니다.
동시에 WeChat 애플릿 프레임워크 자체는 상호 작용 및 UI 구현에 중점을 두고 있으며 내장된 상태 관리를 제공하지 않습니다. 많은 비동기 작업을 App
이나 Page
에서 하나씩 직접 구현한다면 개발도 힘들고 테스트도 어려울 것이라고 생각합니다.
따라서 애플릿에서 애플리케이션 상태 관리 redux-weapp을 용이하게 하기 위해 WeChat 애플릿용 Redux 솔루션 기반 상태 관리 모듈을 구현했습니다.
특히 WeChat 애플릿은 빌드(컴파일) 시 App 범위 외부에서 파일 요구를 지원하지 않으므로 여기서는 npm을 사용하기가 쉽지 않습니다.
따라서 실시간으로 애플리케이션에서 로컬로 종속성을 구축하고 WeChat 애플릿에서 로컬 모듈을 참조해야 합니다.
이런 구축 시나리오에서는 webpack이 가장 편리한 솔루션이라고 생각합니다.
공식 문서에서 WeChat 미니 프로그램이 무엇인지 이해하세요.
Redux 애플리케이션 상태 관리 솔루션을 이해하고 Flux 아키텍처 의 특정 구현이기도 합니다. >
mkdir myappcd myapp npm init
npm install --save-dev babel-cli babel-core babel-loader babel-plugin-add-module-exports babel-polyfill babel-preset-es2015 babel-preset-stage-0
npm install webpack --save-dev
npm install redux redux-thunk --save-dev
인터페이스
를 비동기적으로 호출해야 하는 경우가 많기 때문에 비동기식동작
을 처리하려면이 모듈이 필요합니다.
그런 다음 미니 프로그램 개발을 위한 보조 모듈을 설치합니다: npm install xixilive/weapp xixilive/redux-weapp --save-dev
redux-thunk
프로젝트 만들기디렉토리 구조
myapp |- es6 # 源代码 |- myapp.js # 在app.js文件中require此文件 |- lib # 存放编译之后的js文件 |- pages # 小程序页面定义 |- projects |- projects.js |- projects.json |- projects.wxml |- projects.wxss ... |- app.js # 小程序入口文件 |- app.json |- app.wxss |- webpack.config.js # webpack配置文件
// webpack.config.jsvar path = require('path'), webpack = require('webpack')var jsLoader = { test: /\.js$/, // 你也可以用.es6做文件扩展名, 然后在这里定义相应的pattern loader: 'babel', query: { // 代码转译预设, 并不包含ES新特性的polyfill, polyfill需要在具体代码中显示require presets: ["es2015", "stage-0"] }, // 指定转译es6目录下的代码 include: path.join(dirname, 'es6'), // 指定不转译node_modules下的代码 exclude: path.join(dirname, 'node_modules') }module.exports = { // sourcemap 选项, 建议开发时包含sourcemap, production版本时去掉(节能减排) devtool: null, // 指定es6目录为context目录, 这样在下面的entry, output部分就可以少些几个`../`了 context: path.join(dirname, 'es6'), // 定义要打包的文件 // 比如: `{entry: {out: ['./x', './y','./z']}}` 的意思是: 将x,y,z等这些文件打包成一个文件,取名为: out // 具体请参看webpack文档 entry: { myapp: './myapp' }, output: { // 将打包后的文件输出到lib目录 path: path.join(dirname, 'lib'), // 将打包后的文件命名为 myapp, `[name]`可以理解为模板变量 filename: '[name].js', // module规范为 `umd`, 兼容commonjs和amd, 具体请参看webpack文档 libraryTarget: 'umd' }, module: { loaders: [jsLoader] }, resolve: { extensions: ['', '.js'], // 将es6目录指定为加载目录, 这样在require/import时就会自动在这个目录下resolve文件(可以省去不少../) modulesDirectories: ['es6', 'node_modules'] }, plugins: [ new webpack.NoErrorsPlugin(), // 通常会需要区分dev和production, 建议定义这个变量 // 编译后会在global中定义`process.env`这个Object new webpack.DefinePlugin({ 'process.env': { 'NODE_ENV': JSON.stringify('development') } }) ] }
npm 명령 정의webpack.config.js
입니다.
저는 Jest를 즐겨 사용하기 때문에 여기서도 Jest를 예로 들어보겠습니다.
// package.json"scripts": { "pretest": "eslint es6", //推荐进行静态检查 "test": "jest", ... }, ...,// jest允许在package.json中定义配置"jest": { "automock": false, "bail": true, "transform": { ".js": "/node_modules/babel-jest" //用babel转译 }, "testPathDirs": [ "/tests/" ], "testRegex": ".test.js$", "unmockedModulePathPatterns": [ "/node_modules/" ], "testPathIgnorePatterns": [ "/node_modules/" ] }
위 내용은 WeChat 미니 프로그램 개발의 효율성을 향상시키는 세부 단계를 가르쳐주세요.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!