基于Taro
和TypeScript
的小程序多端编译框架,自我学习
官方文档 https://nervjs.github.io/taro/docs/GETTING-STARTED.html
#安装本地工具
npm install -g @tarojs/cli
#升级本地工具
taro update self
#升级依赖
taro update project
#安装本地包
npm install
#默认配置微信小程序打包编译
npm run start
npm run build
#微信小程序
npm run dev:weapp
npm run build:weapp
#百度小程序
npm run dev:swan
npm run build:swan
#支付宝小程序
npm run dev:alipay
npm run build:alipay
#字节跳动小程序
npm run dev:tt
npm run build:tt
#H5
npm run dev:h5
npm run build:h5
- ESlint
美化辅助插件
- Prettier
{
"editor.tabSize": 2,
"editor.formatOnSave": true,
"editor.formatOnType": true,
"eslint.autoFixOnSave": true,
"[html]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"[json]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"[markdown]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"[javascript]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"[typescriptreact]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"[typescript]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"[scss]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"eslint.validate": [
"javascript",
"javascriptreact",
{
"language": "typescript",
"autoFix": true
},
{
"language": "typescriptreact",
"autoFix": true
},
{
"language": "vue",
"autoFix": true
}
]
}
- 支持编译 css 以及 scss
Taro 支持使用 async functions 来让开发者获得不错的异步编程体验,开启 async functions 支持需要安装包 babel-plugin-transform-runtime 和 babel-runtime。
$ yarn add babel-plugin-transform-runtime --dev
$ yarn add babel-runtime
随后修改项目 babel 配置,增加插件 babel-plugin-transform-runtime。
babel: {
sourceMap: true,
presets: [
[
'env',
{
modules: false
}
]
],
plugins: [
'transform-decorators-legacy',
'transform-class-properties',
'transform-object-rest-spread',
['transform-runtime', {
"helpers": false,
"polyfill": false,
"regenerator": true,
"moduleName": 'babel-runtime'
}]
]
}
Mobx
Lodash
文档地址 https://www.lodashjs.com/
引用官方推荐命名
import _ from "lodash";
import _ from "lodash/core";
import fp from "lodash/fp";
import array from "lodash/array";
import object from "lodash/fp/object";
import at from "lodash/at";
import curryN from "lodash/fp/curryN";
不支持在 render 生命周期之外编写 jsx
如果代码效果无法出现,请重新执行 npm start
小程序 | taro |
---|---|
Page.onLoad | componentWillMount |
onShow | componentDidShow |
onHide | componentDidHide |
onReady | componentDidMount |
onUnload | componentWillUnmount |
onError | componentDidCatchError |
App.onLaunch | componentWillMount |
Component.created | componentWillMount |
attached | componentDidMount |
ready | componentDidMount |
detached | componentWillUnmount |
moved | 保留 |
建议别名使用 @/ 开头而非仅用 @ 开头,因为有小概率会与某些 scoped 形式的 npm 包(如:@babel/core)产生命名冲突。
'@': path.resolve(__dirname, '..', 'src'),
css 暂不支持
alias
, 在 app.js 中使用的样式会自动生效于全局(函数无法全局生效)
mobx 切勿升级