用Taro做個微信小程式Todo, 小白工作記錄
微信小程式框架: Taro
做微信小程式的框架, 幾個比較主流的:
- 官方的
WePY
: https://tencent.github.io/wepy/document.html#/ - 美團的
mpvue
: http://mpvue.com/mpvue/#-html - 京東的
Taro
: https://taro.aotu.io/
前兩者都是Vue風格的, Taro是React的.
本篇本著學習的目的, 用Taro做一個簡單的小程式.
程式碼在這裡: https://github.com/mengdd/mini-program-todo
這是預覽圖:
背景:
一直做Android開發, 最近想把其他各種技術都擼一擼, 拓展一下視野.
之前練過微信小程式原生開發的例子, 基本上只知道個大概, 翻書馬冬梅, 合書馬什麼梅?
所以這次用框架了, 覺得還是要有個輸出, 這樣印象深刻一些.
所以本文是從一個小白的角度, 手把手做練習的.
Taro程式環境
這部分參考:
- 官方文件: https://nervjs.github.io/taro/docs/README.html
- Getting Started:
https://nervjs.github.io/taro/docs/GETTING-STARTED.html
要有node環境, 推薦用nvm來管理.
需要安裝CLI工具:
npm install -g @tarojs/cli
建立專案並執行
建立專案
建立模板專案:
taro init myApp
在這個階段會有一些問題要回答.
* 請輸入專案介紹! My awesome project blablabla. * 是否需要使用 TypeScript ? Yes * 請選擇 CSS 前處理器(Sass/Less/Stylus) Sass * 請選擇模板 預設模板
完了之後會自動安裝依賴:
npm install
然後就成功啦!
執行
Taro需要執行不同的命令, 將Taro程式碼編譯成不同端的程式碼, 然後在對應的開發工具中檢視效果.
這裡僅說微信小程式. 還是需要微信開發者工具:
https://developers.weixin.qq.com/miniprogram/dev/devtools/download.html
import這個專案就行了.
開發前微信開發者工具的專案設定要注意:
需要設定關閉ES6轉ES5功能, 開啟可能報錯.
需要設定關閉上傳程式碼時樣式自動補全, 開啟可能報錯.
需要設定關閉程式碼壓縮上傳, 開啟可能報錯.
這些預設都是關閉的.
微信小程式的編譯預覽及打包:
npm script
$ npm run dev:weapp
$ npm run build:weapp
或者:
$ taro build --type weapp --watch
$ taro build --type weapp
加上--watch
會監聽檔案修改, 去掉會對程式碼進行壓縮打包.
執行編譯命令之後就可以在微信開發者工具中預覽了. 是顯示一個Hello World.
專案結構
因為建立專案的時候用了TypeScript, 所以專案結構是這樣的:
├── dist 編譯結果目錄
├── config 配置目錄
| ├── dev.js 開發時配置
| ├── index.js 預設配置
| └── prod.js 打包時配置
├── src 原始碼目錄
| ├── pages 頁面檔案目錄
| | ├── index index頁面目錄
| | | ├── index.scss index頁面樣式
| | | └── index.tsx index頁面邏輯
| ├── app.scss 專案總通用樣式
| ├── app.tsx 專案入口檔案
| └── index.html
└── package.json
如果需要建立元件, 可以在src
下建立component
目錄來統一存放元件.
"Hello world!"就在index.tsx
中.
IDE
關於IDE:
我發現用微信開發者工具是打不開這些字尾名為scss
和tsx
的檔案的.
微信開發者工具只能用來預覽.
後來用了Intellij, 是能檢視檔案了,
但是開始寫程式碼之後, 發現沒有自動提示, 也沒有自動格式化工具.
又下了個VS CODE:
brew cask install visual-studio-code
格式化的快捷鍵是:
Shift + Alt + F
.
後來我在Text Editor設定裡勾選了Format On Save
.
編寫程式碼
Step 1: 靜態頁面顯示
先弄幾個資料靜態顯示一下:
export default class Index extends Component {
config: Config = {
navigationBarTitleText: '首頁'
}
constructor(props) {
super(props)
this.state = {
list: ['get up', 'eat breakfast', 'study',]
}
inputVal: ''
}
render() {
let { list, inputVal } = this.state
return (
<View className='index'>
<View className='list_wrap'>
<Text>Todo List</Text>
{
list.map((item, index) => {
return <View>
<Text>{index + 1}.{item}</Text>
</View>
})
}
</View>
</View>
)
}
}
然後命令列執行:
taro build --type weapp --watch
就會直接顯示出來結果. 之後的修改也是隨時呈現.
這裡IDE報告兩個TypeScript的問題:
Property 'list' does not exist on type 'Readonly<{}>'
和:
Property 'inputVal' does not exist on type 'Index'.
按照這裡的方法修改的:
interface MyProps {
}
interface MyState {
list: Array<string>;
inputVal: string;
}
export default class Index extends Component<MyProps, MyState> {
//...
}
程式碼中設定值的時候呼叫this.setState()
.
Step 2: 新增和刪除專案
加上輸入框, 新增和刪除按鈕的對應方法.
完整程式碼:
interface MyProps {
}
interface MyState {
list: Array<string>;
inputVal: string;
}
export default class Index extends Component<MyProps, MyState> {
config: Config = {
navigationBarTitleText: '首頁'
}
constructor(props) {
super(props)
this.state = {
list: ['get up', 'eat breakfast', 'study',],
inputVal: ''
}
}
addItem() {
let { list } = this.state
const inputVal = this.state.inputVal
if (inputVal == '') return
else {
list.push(inputVal)
}
this.setState({
list,
inputVal: ''
})
}
removeItem(index) {
let { list } = this.state
list.splice(index, 1)
this.setState({
list
})
}
inputHandler(e) {
this.setState({ inputVal: e.target.value })
}
render() {
let { list, inputVal } = this.state
return (
<View className='index'>
<Input className='input' type='text' value={inputVal} onInput={this.inputHandler.bind(this)} />
<Text className='add' onClick={this.addItem.bind(this)}>新增</Text>
<View className='list_wrap'>
<Text>Todo List</Text>
{
list.map((item, index) => {
return <View className='list_item'>
<Text>{index + 1}.{item}</Text>
<Text className='del' onClick={this.removeItem.bind(this, index)}>刪除</Text>
</View>
})
}
</View>
</View>
)
}
}
Step 3: 樣式調整
用了這裡面的樣式: https://juejin.im/book/5b73a131f265da28065fb1cd
然後企圖調整button的對齊. (CSS不太擅長, 請輕拍, 請指教.)
.input {
display: inline-block;
margin: 32px;
border: 1px solid #666;
width: 65%;
vertical-align: middle;
}
.list_wrap {
padding: 32px;
}
.list_item {
margin: 20px 0;
}
.add,
.del {
display: inline-block;
width: 120px;
height: 60px;
margin: 0 10px;
padding: 0 10px;
font-size: 22px;
line-height: 60px;
text-align: center;
border-radius: 10px;
box-sizing: border-box;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
justify-content: center;
vertical-align: middle;
}
.add {
background-color: #5c89e4;
color: #fff;
border: 1px solid #5c89e4;
}
.del {
background-color: #fff;
color: #5c89e4;
border: 1px solid #5c89e4;
position: absolute;
right: 32px;
}
Taro命令
快速生成新的頁面檔案:
Taro create --name [頁面名稱]
參考
- taro github
- awesome taro
- 微信開發者工具
- 掘金小冊: Taro 多端開發實現原理與專案實戰
最後, 歡迎關注微信公眾號: 聖騎士Wind
相關推薦
用Taro做個微信小程式Todo, 小白工作記錄
微信小程式框架: Taro 做微信小程式的框架, 幾個比較主流的: 官方的WePY: https://tencent.github.io/wepy/document.html#/ 美團的mpvue: http://mpvue.com/mpvue/#-html 京東的Taro: https://taro.ao
用Python做個微信秒回器,再也不怕捱罵啦!
在每次你玩遊戲玩的正嗨的時候,你女票突然發訊息給你怎麼辦?到底是該拋棄對於去回女票的訊息,還是選擇遊戲不理女票呢?假如你選擇了第二種,估計不是搓衣板,就是口紅、包包、衣服伺候了,所以在這種時候,你需要一個幫你秒回信息的神器了。 有想學Python或者對Python感興趣的老
春哥教你微信支付商戶號如何綁定多個微信公眾號及小程序
img 線下 tex 如何 創建 微信公眾 實現 alt mark 大家在使用微信支付的時候都知道微信支付賬號要和對應的公眾號、小程序有對應的綁定關系才可以使用的。今天春哥技術博客就給大家總結一下這方面的知識。 背景 微信支付交易發起依賴於公眾號、小程序、移動應用(即A
500行程式碼,教你用python寫個微信飛機大戰
這幾天在重溫微信小遊戲的飛機大戰,玩著玩著就在思考人生了,這飛機大戰怎麼就可以做的那麼好,操作簡單,簡單上手。 幫助蹲廁族、YP族、飯圈女孩在無聊之餘可以有一樣東西讓他們振作起來!讓他們的左手 / 右手有節奏有韻律的朝著同一個方向來回移動起來! 這是史詩級的發明,是濃墨重彩的一筆,是…… 在一陣抽搐後,我
用 Java 做個“你畫手機猜”的小遊戲
> 本文適合有 Java 基礎的人群 ![](https://img2020.cnblogs.com/blog/759200/202009/759200-20200923184426141-1352914100.gif) 作者:**DJL-Lanking** HelloGitHub 推出的[《講
做《微信小程式》必要的2個條件(企業和https)
小程式,類似公眾號功能但不一樣的體驗,不是APP勝似APP。 微信還沒正式釋出但已經預熱很猛烈。 公眾開發時 微信提供了開發者工具,現在升級就可以開發小程式了,所以大家都可以自己做個demo了。但是想釋出 或用 高階功能必須 得註冊 ,得有APPId 下面
不管什麼手機,擁有這4個微信小程式就無敵了!
如果你知道微信,還不知道微信小程式就out啦,自從微信小程式跳一跳火了之後,帶動了不少小程式的發展,其中,這4個微信小程式非常強大,無需下載,無需安裝,搜一搜就能用啦,不管你是什麼手機,擁有就無敵了。 1. 最近文件隨身 一個分享文件的工具,是我偶然間發現的,可
130個微信小程式原始碼資源免費領取
為了感恩大家長久以來的關注和支援,小編準備了一些福利,整理了包含前端,Java,產品經理,微信小程式,Python,網站原始碼,Android應用視訊教程,微信公眾平臺開發教程及材料等資源合集大放送。 重要的話說三遍,感恩大回饋,超有價值的學習資料免費送!免費領取! 如果需要學習視訊,歡迎關
130個微信小程式原始碼demo,拿來就可以跑起來的小程式
微信小程式未來也將會是個趨勢,在現在這個時代,安卓手機使用者寧願先從微信裡面去搜一下是否有這個軟體,這個軟體是否值得安裝也不願意開啟手機應用商店去下載應用。 其中有以下兩個主要原因: 第一,使用者的惰性警惕性越來越高,現在的手機APP動不動就要獲取使用者的全部許可權,本
1-微信小程式開發(安裝軟體和執行第一個微信小程式)
https://developers.weixin.qq.com/miniprogram/dev/ 我的 &nbs
用微信開發者工具--開啟小程式元件vant Weapp示例
瀏覽器搜尋:https://github.com/youzan/vant-weapp 1.下載Vant Weapp元件, 2.開啟微信開發者工具,把vant-weapp/example目錄新增進去, 3.把dist目錄複製到example目錄下,在開發者工具開啟example目錄就可以預
編寫我的第一個微信小程式
最近在學習微信小程式也算是入門級別的,於是乎跟著學習了下,下面簡單的展示下自己做的第一個小程式介面 簡單介紹下,初次使用微
我的第一個微信小程式
今年國慶假期的時候,在家裡帶寶寶。想下載一個哄寶寶玩的遊戲,從 App Store上搜索了一圈,發現評分高的基本上都是收費的。因為App Store上有限免機制,所以就萌發了做一款關注限免應用的小程式。 學習調研 4月份的時候,幫助同事開發了一款小程式,因為當時時間比較急,就用了第三方快速開發框架 mpvue
600多個微信小程式原始碼涵蓋各個行業大部分帶後臺持續更新中
今天把本人花費一個月左右整理的600多款小程式原始碼釋出出來,以後每個月還會持續更新,很大一部分都帶有後臺原始碼幷包含有小程式上線教程,幫你分分鐘上線自己的小程式,下面我們來看看目錄截圖,最後面會把原始碼目錄以文字的形式匯出來,這樣你可以在網頁上搜索單個想要的小程式原
給和我一樣的初學者分享個微信小程式.WXSS使用background引入背景圖的辦法
因為專案的緣故,我最近開始學小程式。初入小程式就遇見了個問題,就是在引入背景圖片的時候會出現,下圖的錯誤: 看了錯誤後才發現,原來微信小程式在引入背景圖時需要將圖片格式轉一下,並不是說是我的路徑出現問題了。為了將圖片格式專成base64。現在給所
【好福利】分享100多個微信小程式原始碼
2017年1月9號,中國網際網路世界發生了一件重要事件:凌晨0點,微信小程式正式和我們大夥見面了,從此以後,我們都可以開發屬於我們自己的微信小程式了。 這不,微信小程式正式和大家一見面,市面上就有很多開源的微信小程式了,這裡給大家奉上100多個微信小程式原始碼
完全零基礎做一個微信小程式記錄~
作為一隻數學系大二的小菜喵,之前聽過一個微信小程式的產品展示,覺得微信小程式還挺好玩的,不過自己沒有接觸過前端開發,很多東西都在自己摸索,把一些有意思的東西記錄下來,以備以後查閱,也給一些非科班的程式猿們在掙扎中提供一點借鑑~ 微信小程式對新手非常友好,如
4分鐘手把手教你做出第一個微信小程式
關於如何開發自己第一個程式,上一篇我釋出了圖文版本,有的閣友自己說沒能實現,我也擔心看圖實在會讓大家感覺不直觀,所以我花了點時間做了一個教學視訊,希望能繼續幫助到對微信小程式感興趣的人。用了愛剪輯稍微做
動手寫第一個微信小程式
微信小程式開放公測了,目前公測面向的使用者主要是政府、企業、組織,暫時不對個人開發者開放註冊。 註冊請前往微信公眾平臺註冊 微信小程式註冊 下載微信web開發者工具並開啟quickStart工程(提供獲取當前登入賬號的功能),可以看到編輯和除錯的介面
atom用atom-beautify格式化微信小程式程式碼
公司硬性要求程式碼格式問題,我是用atom編寫的微信小程式程式碼,這就蛋疼了,百度的atom-beautify最多隻支援格式化js和json的程式碼,查了半天沒有找到解決辦法,就想把外掛改一下,因為wxml和wxss與xml和css沒什麼區別,就想著能不能把wxml和wxs