摘要:最后的目的是能滿足所有微信小程序開發(fā)者的需求,全面覆蓋小程序開發(fā)。像開發(fā)一樣,用開發(fā)微信小程序。
項目地址:wn-cli
wn-cliwn-cli 像React組件開發(fā)一樣來開發(fā)微信小程序
名字由來:wn -> weapp native 取第一個字母
Installnpm install wn-cli --save-dev // 或者 yarn add wn-cli --devUsage
// 構(gòu)建 npx wn ./examples ./dist // 監(jiān)聽模式 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
然后在微信開發(fā)者工具中打開 dist/ 文件夾,就可以預(yù)覽開發(fā)了,可以選擇你喜歡的編輯器。
API 注冊小程序創(chuàng)建 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 "自定義公共函數(shù)" } // 生命周期函數(shù) 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 同目錄下創(chuàng)建 app.css ,來書寫公用的 css 。
/* src/app.css */ .test { color: red; }
如此,小程序就注冊好了。
創(chuàng)建頁面創(chuàng)建第一個頁面,在 src/pages 下面創(chuàng)建頁面文件,如 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("系統(tǒng)信息", systemInfo); } data = { name: "小程序" } render() { return (你好,{name} ) } }
添加文件作用域的樣式文件,相當(dāng)于css module,在 src/pages/index 文件夾下面創(chuàng)建同名 css 文件 index.css,不用再導(dǎo)入,只需要命名和同文件下的 .jsx 文件相同就可以了
/* src/pages/index/index.css */ .test { color: blue; text-align: center; }
如此第一個頁面就創(chuàng)建好了,接下來你可以添加自己的 me.jsx 頁面。
創(chuàng)建組件創(chuàng)建第一個組件,如 header,在 src/components下面創(chuàng)建 header/header.jsx 和 header/header.css,兩文件
// src/components/header/header.jsx import { Component } from "wn" export default class extends Component { render() { return () } }
slot 表示組件的 children 放置的位置,還可以指定位置,設(shè)置 slot 的 name。
/* src/components/header/header.css */ .header { color: blue; }使用組件
創(chuàng)建了組件后,在頁面中使用,首先在頁面中導(dǎo)入:
import header from "../../components/header/header.jsx";
然后在需要的時候使用:
render() { return () } hello 你好,{name}
也可以組件嵌套等。
Promise 化微信 API,即使用 Promise 代理 wx 中的異步方法如:
// ... async onShow() { const systemInfo = await wx.getSystemInfo() console.log(systemInfo); } // ...
注:原生 API 配置中的 complete 方法并沒有代理
以上暫時的功能能滿足大多數(shù)簡單的微信小程序開發(fā),后續(xù)在使用中遇到瓶頸了,再配置兼容性開發(fā)高級 API 滿足需求。
最后的目的是能滿足所有(99%)微信小程序開發(fā)者的需求,全面(99%)覆蓋小程序開發(fā)。像 React Native 開發(fā) APP 一樣,用wn-cli 開發(fā) weapp (微信小程序)。
離目標(biāo)還有不小的距離,如果你也是 React 派,對微信小程序有興趣,可以 fork 代碼共同建設(shè)維護這個工程 ,或許比較懶,那就直接提 ISSUE,這兩樣都會使我開心一整天的 => 項目地址:wn-cli。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/92504.html
摘要:于是,我重新思考了下,最佳的微信小程序開發(fā)實踐應(yīng)該是無痛的,且舒服的,無痛的是指在小程序的飛速發(fā)展變更中,我們不用重復(fù)的浪費學(xué)習(xí)第三方框架和原生框架。以上,便可以在微信小程序中使用了。 weapp-starter 微信小程序開發(fā)最佳實踐 項目地址 為什么會有這個 repo 在小程序之初便開發(fā)應(yīng)用了,現(xiàn)在小程序的開發(fā)也越來越成熟了,完善了很多的API、組件、架構(gòu)等,社區(qū)也由原來的零星點點...
摘要:使用開發(fā)微信小程序基礎(chǔ)接口核心設(shè)計原則之一就是類型檢查,通過使用接口可以進行類型檢查,滿足傳統(tǒng)面向?qū)ο笏枷?,利于有效開發(fā),有效避免類型轉(zhuǎn)換問題。使用開發(fā)微信小程序基礎(chǔ)迭代器為每一個對象定義了默認(rèn)的迭代器。 使用TypeScript開發(fā)微信小程序(1)——基礎(chǔ):數(shù)據(jù)類型(Type) ?TypeScript 的基本數(shù)據(jù)類型有boolean、number、string 、array、enum...
摘要:在眾多消息里,啃先生排除掉預(yù)測類的信息,汲取了對于技術(shù)從業(yè)者有用的信息,整理出此文章,說說微信小程序開發(fā)的設(shè)計理念和入門。以上至少四個文件,即可生成一個最簡單的微信小程序。 昨晚臨睡覺前,還在想應(yīng)該給xx打個電話,問問微信應(yīng)用號應(yīng)該有原生 UI 吧,要不然跟直接跑 HTML 5 有什么區(qū)別? 而今天一大早我便一本正經(jīng)胡說八道猜想,微信小程序不會有 JS IDE ,一個小時之后,發(fā)現(xiàn)被打...
摘要:高顏值好用易擴展的微信小程序庫,有贊。一套高質(zhì)量的微信小程序組件庫。用和搭建的一個通用管理后臺基于實現(xiàn)的后臺管理系統(tǒng)模板一個后臺管理系統(tǒng)模板是一套組件化框架,支持定制主題,主要服務(wù)于前臺及中后臺產(chǎn)品。基于后臺管理系統(tǒng)。 快來Star,在這里哦Awesome UIKit。 showImg(https://segmentfault.com/img/remote/14600000059942...
摘要:高顏值好用易擴展的微信小程序庫,有贊。一套高質(zhì)量的微信小程序組件庫。用和搭建的一個通用管理后臺基于實現(xiàn)的后臺管理系統(tǒng)模板一個后臺管理系統(tǒng)模板是一套組件化框架,支持定制主題,主要服務(wù)于前臺及中后臺產(chǎn)品?;诤笈_管理系統(tǒng)。 快來Star,在這里哦Awesome UIKit。 showImg(https://segmentfault.com/img/remote/14600000059942...
閱讀 1813·2021-11-17 09:33
閱讀 3600·2021-11-16 11:40
閱讀 3114·2019-08-30 11:23
閱讀 1102·2019-08-29 16:36
閱讀 2525·2019-08-29 13:23
閱讀 1820·2019-08-29 12:59
閱讀 1609·2019-08-29 12:42
閱讀 2033·2019-08-28 18:22