wn-cli 像React组件开发一样来开发微信小程序
项目地址:wn-cli
wn-cli
wn-cli 像React组件开发一样来开发微信小程序
名字由来:wn -> weapp native 取第一个字母
Install
npm install wn-cli --save-dev // 或者 yarn add wn-cli --dev
Usage
// 构建 npx wn ./examples ./dist // 监听模式 npx wn ./examples ./dist -w
如果你遇到一个错误,让拷贝 wn.js
文件,请按提示信息将 node_modules
中的 node_modules/wn-cli/dist/wn.js
文件拷贝到 modules
文件夹中
你的目录可能是这样的:
├── dist │ ├── app.js │ ├── app.json │ ├── app.wxss │ ├── modules │ │ └── wn.js │ ├── pages │ │ ├── index │ │ │ ├── index.js │ │ │ ├── index.json │ │ │ └── index.wxml │ │ │ └── index.wxss │ │ └── me │ │ ├── me.js │ │ ├── me.json │ │ └── me.wxml │ │ └── me.wxss │ └── project.config.json ├── package.json ├── project.config.json ├── src │ ├── app.jsx │ ├── app.css │ └── pages │ ├── index │ │ ├── index.css │ │ └── index.jsx │ └── me │ │ ├── me.css │ └── me.jsx └── yarn.lock
然后在微信开发者工具中打开 dist/
文件夹,就可以预览开发了,可以选择你喜欢的编辑器。
API
注册小程序
创建 app.jsx
文件,这也是小程序的入口文件,可能像下面这样写
// src/app.jsx import { App } from 'wn'; // 引入所有的页面,相对路径 import './pages/index/index.jsx'; import './pages/me/me.jsx'; export default class extends App { debug = true window = { navigationBarTitleText: 'hello', navigationBarTextStyle: 'black', navigationBarBackgroundColor: '#f4f5f6', backgroundColor: '#f4f5f6', } tabBar = { color: '#333333', backgroundColor: '#ffffff', list: [ { pagePath: 'pages/index/index', // 编译后js路径 text: '首页', }, { pagePath: 'pages/me/me', text: '我', }, ], } myData = '自定义公共变量' hello() { return '自定义公共函数' } // 生命周期函数 onLaunch() { console.log('app: hello onLaunch') } onShow() { console.log('app: hello onShow') } onHide() { console.log('app: hello onHide') } onError() { console.log('app: hello onError') } }
同样的,可以通过在 app.js
同目录下创建 app.css
,来书写公用的 css
。
/* src/app.css */ .test { color: red; }
如此,小程序就注册好了。
创建页面
创建第一个页面,在 src/pages
下面创建页面文件,如 index/index.jsx
,可以这样写:
// src/pages/index/index.jsx import { Page, wx } from 'wn' export default class extends Page { window = { navigationBarTitleText: 'hello' } navigationBarTextStyle = 'black' async onShow() { const systemInfo = await wx.getSystemInfo() console.log('系统信息', systemInfo); } data = { name: '小程序' } render() { return ( <view class="test"> 你好,{name} </view> ) } }
添加文件作用域的样式文件,相当于css module
,在 src/pages/index
文件夹下面创建同名 css
文件 index.css
,不用再导入,只需要命名和同文件下的 .jsx
文件相同就可以了
/* src/pages/index/index.css */ .test { color: blue; text-align: center; }
如此第一个页面就创建好了,接下来你可以添加自己的 me.jsx
页面。
创建组件
创建第一个组件,如 header
,在 src/components
下面创建 header/header.jsx
和 header/header.css
,两文件
// src/components/header/header.jsx import { Component } from 'wn' export default class extends Component { render() { return ( <view class="header"> <slot></slot> </view> ) } }
slot
表示组件的children
放置的位置,还可以指定位置,设置slot
的name
。
/* src/components/header/header.css */ .header { color: blue; }
使用组件
创建了组件后,在页面中使用,首先在页面中导入:
import header from '../../components/header/header.jsx';
然后在需要的时候使用:
render() { return ( <view class="test"> <header> hello </header> 你好,{name} </view> ) }
也可以组件嵌套等。
Promise 化微信 API,即使用 Promise 代理 wx 中的异步方法
如:
// ... async onShow() { const systemInfo = await wx.getSystemInfo() console.log(systemInfo); } // ...
- 注:原生
API
配置中的complete
方法并没有代理
以上
- 暂时的功能能满足大多数简单的微信小程序开发,后续在使用中遇到瓶颈了,再配置兼容性开发高级 API 满足需求。
- 最后的目的是能满足所有(99%)微信小程序开发者的需求,全面(99%)覆盖小程序开发。像
React Native
开发APP
一样,用wn-cli
开发weapp (微信小程序)
。 - 离目标还有不小的距离,如果你也是
React
派,对微信小程序有兴趣,可以fork
代码共同建设维护这个工程 ,或许比较懒,那就直接提ISSUE
,这两样都会使我开心一整天的 => 项目地址:wn-cli。
相关推荐
浪味仙 2020-06-03
cdkey 2020-05-04
jieq 2020-11-09
ZZZhangbingyi 2020-08-26
haixianTV 2020-08-15
Develop 2020-06-25
郴州小程序 2020-06-13
huningjun 2020-06-12
zuoliangzhu 2020-06-11
hgzhang 2020-06-04
powderhose 2020-06-02
cdkey 2020-05-29
戴翔的技术 2020-05-27
郴州小程序 2020-05-26
cdkey 2020-05-26
sucheng 2020-05-25
newhappy 2020-05-16
cbao 2020-05-12
cbao 2020-04-26