집 >위챗 애플릿 >미니 프로그램 개발 >WeChat 미니 프로그램 개발의 효율성을 향상시키는 세부 단계를 가르쳐주세요.
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필요한 종속성 모듈 설치 시작미니 프로그램을 실행하는 데 필요한 모듈 외에, 건설 모듈에 필요한 모듈도 있습니다. 많아 보일 수 있지만 걱정하지 마세요. 대부분은 선언적이므로 직접 전화할 필요가 없습니다. 경험이 적은 학생들의 이해를 돕기 위해 이러한 종속성을 단계별로 설치하겠습니다. 첫 번째는 코드 번역 도구인 Babel입니다:
npm install --save-dev babel-cli babel-core babel-loader babel-plugin-add-module-exports babel-polyfill babel-preset-es2015 babel-preset-stage-0위 모듈을 사용하면 빌드 중에 ES6/7 코드를 ES5 코드로 번역할 수 있습니다(실제로 인터프리터는 ES5만 인식합니다). 다음으로 패키징 도구인 웹팩을 설치합니다:
npm install webpack --save-dev개발 서버 및 핫 모듈 교체 기능 없이 코드만 패키징하면 됩니다. 따라서 다른 확장 프로그램이나 플러그인을 설치하지 않고 웹팩 모듈 자체만 설치하면 됩니다. 다음으로 Redux를 설치해 보겠습니다.
npm install redux redux-thunk --save-dev실제 애플리케이션에서는 API 서버의
인터페이스
를 비동기적으로 호출해야 하는 경우가 많기 때문에 비동기식동작
을 처리하려면이 모듈이 필요합니다.
그런 다음 미니 프로그램 개발을 위한 보조 모듈을 설치합니다: npm install xixilive/weapp xixilive/redux-weapp --save-dev
그 중 weapp 모듈은 WeChat 미니 프로그램 API의 래퍼로 사용하기 쉬운 API와 redux를 제공합니다. -weapp은 상태 관리를 위해 Redux를 기반으로 합니다. 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!