1. 程式人生 > >通過微信小程式看前端

通過微信小程式看前端

前言

2016年9月22日凌晨,微信官方通過“微信公開課”公眾號釋出了關於微信小程式(微信應用號)的內測通知。整個朋友圈瞬間便像炸開了鍋似的,各種揣測、介紹性文章在一夜裡誕生。而真正收到內測邀請的公眾號據說只有200個。

雖然內測名額十分稀少,但依賴中國廣大開發者的破解和分享精神,在網路上很快出現了開發工具的破解版本和API文件。然而可能是微信的妥協或者早已預料,9月24日微信官方釋出了不需要破解就可以使用的微信小程式開發者工具和文件,對於費勁心思破解完的開發者來說應該瞬間整個人都不好了。

作為一名具有極客精神的前端開發者,我也馬上在這股熱潮中試了下水,下載了小程式開發工具。下面是登陸後的介面:

圖片描述

從整個結構佈局來看這款IDE工具可以分為三個部分,首先左側為導航操作區域,中間是目錄或展示區域,右側為除錯區域(很像Chrome的除錯工具)。下面我就以前端的角度分別從程式碼角度和巨集觀角度介紹下自己對於微信小程式的看法。

程式碼角度

縱觀整個開發文件,微信小程式的前端技術主要可以分為“框架”、“元件”和“API介面”。

1.框架

微信提供了一套自己的用於開發小程式的前端框架,和目前主流的前端框架相比,其既有類似的地方,也有特殊的地方。

特殊的地方在於其只能在微信小程式開發工具內使用,並做了相對嚴格的使用和配置限制,開發者必須按照其規定的用法來使用。一些外部的框架和外掛在小程式裡都是無法使用的,同時由於框架並非執行在瀏覽器中,所以 JavaScript 在 web 中一些能力都無法使用,如document,window等。

而相似的地方在於其包含了和其他框架一樣的“邏輯層”和“檢視層”,以資料驅動為主,不操作DOM元素等。下面以程式碼為例子來介紹:

(1)資料繫結

<!--wxml-->
<view> {{message}} </view>
// page.js
Page({
    data: {
      message: 'Hello MINA!'
    }
})

Page() 方法用來註冊一個頁面。接受一個 OBJECT 引數,其指定頁面的初始資料、生命週期函式、事件處理函式等。這乍一看怎麼和目前流行的Vue框架語法十分類似呢,Vue程式碼如下:

<view> {{message}} </view>
// page.js
new Vue({
  data: {
    message: 'Hello MINA!'
  }
})

都是雙括號插值語法,連資料初始化和雙向繫結的格式都一樣,好吧,就當純屬巧合吧。

這裡需要注意的是,微信小程式提供了WXML字尾的檔案型別,其實就是類似XML的標籤語言檔案。

(2)列表渲染

<!--wxml-->
<view wx:for="{{array}}"> {{item}} </view>
// page.js
Page({
    data: {
      array: [1, 2, 3, 4, 5]
    }
})

這樣的列表渲染語法相信學過Angular和Vue的同學都比較容易掌握,都是非常的類似,當然還有條件渲染等。

(3)事件繫結

<view bindtap="add"> {{count}} </view>
Page({
    data: {
      count: 1
    },
    add: function(e) {
        this.setData({
            data: this.data.count + 1
        })
    }
})

如果你學過React,那麼其裡面有一個setState的方法可以用來改變狀態的值,這裡的setDate也是一樣的,通過繫結的add方法來改變檢視中count的值。

(4)樣式匯入

/** common.wxss **/
.small-p {
    padding:5px;
}
/** app.wxss **/
@import "common.wxss";

.middle-p {
    padding:15px;
}

這裡小程式提供了又一種新的檔案字尾型別WXSS,用於描述WXML的元件樣式,其與CSS檔案相比還提供了像SASS和LESS這樣的預編譯語言的樣式匯入功能,同時還提供了rpx及rem的單位尺寸功能。

(5)模組化

// common.js
function sayHello(name) {
    console.log('Hello ' + name + '!')
}
module.exports = {
    sayHello: sayHello
}
var common = require('common.js')
Page({
    helloMINA: function() {
      common.sayHello('MINA')
    }
})

微信小程式秉承了JS模組化的機制,熟悉Require.js或者Sea.js的同學應該很熟悉,這裡通過module.exports暴露物件,通過require來獲取物件。

2.元件

小程式的元件其實也是框架的一部分,主要負責UI的呈現,也自帶了一些功能與微信風格的樣式。基本上移動端常用的元件都包含在內,比如表單元件、導航元件、媒體元件等。下面便是小程式提供的八類元件:

圖片描述

3.API介面

相比微信公眾號的開發,微信小程式向開發者提供了更多的API介面,可以方便的調起微信提供的能力,比如監聽重力感應和羅盤資料、WebSocket連線、支付功能等。下面以一個發起網路請求的API為例:

wx.request({
    url: 'test.php',
    data: {
        name: 'luozh' ,
        age: 18
    },
    header: {
        'Content-Type': 'application/json'
    },
    success: function(res) {
        console.log("請求成功")
    },
    fail: function() {
        console.log("請求失敗")
    }
})

wx.request發起的是https請求。一個微信小程式,同時只能有5個網路請求連線。關於更多API介面的介紹請查閱官方文件。

以上便是關於微信小程式前端程式碼部分的簡單介紹,相信有一點前端框架使用經驗的同學上手都是相對容易的,下面將從巨集觀角度講解下我個人認為微信小程式給前端領域的帶來影響。

巨集觀角度

微信小程式一出來的時候,網上關於其對於前端界的影響層出不窮,更多的文章和評論認為前端又要火了,前端的第二春來了,Javascript和HTML5的新時代來了等。

當然微信小程式的出現確實會給前端帶來一定的推波助瀾的效果,但是任何一件事物的誕生都是利弊並存的,微信小程式也不例外。以下便簡單闡述下我個人的看法:

1.利

(1)提高開發相容性:微信小程式可以說是重新定義了APP,使得一款應用能夠在android、iphone及windows phone中都能執行,對於前端來說實現了“一次編譯,到處執行”的理念。

(2)推動前端技術的發展:微信小程式以其簡單的開發環境,使以Javascript和HTML5為主的前端技術在龐大的微信社交群體內傳播,越來越多的人開始接觸前端,參與到前端編碼和設計中來,為前端技術貢獻力量。

(3)其他...

2.弊

(1)增加前端工作量及學習成本:原本一名前端工程師負責的平臺就很廣泛,包括PC端、移動端、APP應用等,微信小程式的出現會要求前端涉及微信應用的開發,一定程度增加了學習和工作成本。同時企業也會增加這方面的開發和投入成本。

(2)前端競爭日趨明顯:微信小程式的誕生可能又會吸引一批後臺、APP開發等其他領域的人員轉向前端開發,而這些本來就具備較強邏輯思維或者較強感性思維的人將擠掉那些處於前端邊緣的新手,可能使得大部分低水平前端開發者面臨失業或者找不到工作的危險。

(3)其他...

這裡大概介紹了幾點微信小程式給前端帶來的影響,更多的大家可以補充。

總結

本文從程式碼角度和巨集觀角度簡單闡述了微信小程式在前端領域的一些內容和影響,希望能夠幫助那些不瞭解微信小程式的開發者很快入門並認識這一新的技術領域。

至於小程式對於前端的影響,反過來我們也可以這樣認為:

技術的發展不是基於一個平臺去改變,而是通過技術去驅動一個平臺改變,正是因為前端的發展才催生了“小程式”的這種可能性…

相關推薦

通過程式前端

前言 2016年9月22日凌晨,微信官方通過“微信公開課”公眾號釋出了關於微信小程式(微信應用號)的內測通知。整個朋友圈瞬間便像炸開了鍋似的,各種揣測、介紹性文章在一夜裡誕生。而真正收到內測邀請的公眾號據說只有200個。 雖然內測名額十分稀少,但依賴中國廣大開發者的破解和分享精神,在網路上很快出現了開發工

程式 web前端的春天 or 噩夢

                       最近大家看到這張圖是不是都快吐了?這兩天一睜眼就被這張圖刷屏了   喵了咪的,點到哪裡都是這個報道和新聞最近因為工作 和生活略忙,愛吹文章的我,更新頻率也低了,在這裡抱個歉,希望大家理解和包容,希望“粉絲們”(裝逼完成、跑….),不要離開我這麼帥的人!   此文觀

程式前端與java後臺進行資料互動

最近小程式挺火的,準備寫個小程式試試,我會將我遇到的問題和我認為有用的記錄下來,但是隻瞭解java,並不太懂PHP,雖然說語言都是相通的(我也不知道誰說的),反正還是用Java寫後臺吧,1.申請伺服器+域名3.準備使用ssm框架進行後臺開發,先進行前端後臺資料互動試試後臺ja

生產製造追溯系統-通過程式實現移動端報表平臺

前言 前兩篇文章主要梳理了一下在生產過程中如何更高效、更穩定的實現條碼列印,有不少園子裡的朋友私信我,互相討論了一些技術方面的問題,雙方都各有收穫,再此感謝部落格園提供的這個交流平臺,讓五湖四海的朋友能夠匯聚在一起,互相學習、互相進步!! 生產製造追溯系統-條碼列印 生產製造追溯系統-再說條碼列印 &

前端前沿點】程式狀態管理——Redux VS Mobx mvvm完成

一、微信小程式自身的應用狀態是怎樣定義的呢? page({ data:{ item:'', isLoading:true}, onLoad:function(){this.setData({ isLoading:false})}}) 二、為什麼使用應用狀態管理工具? 同一資

程式文件寫例項十一)程式課堂寶APP完結總結及github地址

一、總結 國慶假期偷懶了幾天,從接到任務到分析到實現總共花了20天左右,終於完成了,點名功能由於要實時監聽需要收費,所以沒有給出程式碼,需要完成的可以自己動手實現。用一張導圖來結束: 二、原始碼地址 所有原始碼已經上傳https://github.com/SoleilLuo/Stu

程式文件寫例項十)程式課堂寶APP實現我的模組相關介面及邏輯

繼上篇博文,這篇完成最後一個模組,即我的模組。 一、頁面效果 這個模組是和使用者型別相關的,因此老師賬號和學生賬號能看的功能不一樣,老師端效果如下: 點選頭像到達個人資訊如下: 點選後可以做相應的修改。學生端的介面如下: 修改密碼的頁面如下: &nbs

程式文件寫例項八)程式課堂寶APP實現練習模組前臺

接上篇博文,這篇主要描述練習模組的前臺顯示,其中包括test頁面,答題detail頁面以及提交答題後答卷answer頁面。 一、練習模組test頁面 練習頁面主要展示的是當前使用者的頭像,暱稱以及學校資訊,另外還有答題資訊,以及每個章節的練習資訊,先來看看效果: grid用的是樣式

程式文件寫例項七)程式課堂寶APP實現線上課堂測試

接著上篇博文已經完成簽到功能,這篇來完成課堂測試功能。 一、需求描述 1、在後臺選擇題、主觀題表中上傳測試題 2、客戶端獲取題目資訊 3、把題目資訊格式化載入顯示 4、客戶端答題,主觀題每題能上傳一張答題圖片 5、客戶端答題結束提交到伺服器 二、前臺頁面 提交大量資料

程式文件寫例項六)程式課堂寶APP實現簽到邏輯

繼上篇博文,這篇寫下籤到實現的邏輯。 一、實現邏輯 發起簽到 1、先上傳當前自己的定位經緯度 2、學生查詢老師的最後一次簽到記錄,如果發現簽到記錄signComplete為false說明有新的簽到 3、得到簽到的第幾次課 4、系統獲得學生的定位經緯度 5、判斷兩點經緯度轉

程式文件寫例項五)程式課堂寶APP實現獲取簽到列表

根據上篇博文,這篇主要實現獲取簽到列表邏輯。 獲得簽到列表主要有以下步驟: (1)查詢老師的ID (2)查詢老師的簽到記錄 (3)如果當前使用者是老師,直接顯示所有記錄,因為簽到記錄都是老師發起的,肯定每次都簽到 (4)如果當前使用者是學生,以老師的簽到列表作為長度,然後以ite

程式文件寫例項四)程式課堂寶APP實現簽到子頁面佈局及課程視訊播放頁面

一、簽到子頁面佈局 子頁面主要是一個簽到按鈕,然後下方是簽到記錄列表。 1、簽到按鈕 佈局程式碼: <button class='sign-button' bindtap='sign'>簽到</button>

程式文件寫例項三)程式課堂寶APP實現整體介面框架及首頁佈局

一、首頁佈局簡單思路 回顧上一篇博文,首頁的內容主要有輪播圖,橫向滑動選單以及選單對應的view,橫向滑動選單有簽到、課堂測試、模擬測試、課堂提問、答問記錄五個選項,當點選選項時更新顯示view。由於素材和時間有限,所以佈局做得相對簡單,主要是側重思路及程式碼邏輯。 二、輪播圖 檢視文件

程式通過code獲取openid和unionid

程式碼如下,前端傳入code即可 <?php /** * Created by PhpStorm. * User: Administrator * Date: 2018/7/14 0014 * Time: 上午 11:17 */ class topapi_api_v1_u

程式】在開發工具上七牛雲的圖片可以看到,但是在真機上不到的原因解決

在開發微信小程式過程中,在微信開發者工具上,七牛雲的圖片都可以展示出來,但是在真機上,七牛雲的圖片卻展示不出來,也沒有報404找不到或者不能載入圖片的問題,     必須保證: 1.圖片是用image載入的; 2.圖片的url裡面沒有中文; 3.圖片的HTTP應為小寫的

程式-獲取使用者資訊-前端寫法

開發微信小程式,前提是申請到一個 appId 並拿到 appSecret ,並在微信公眾平臺配置好小程式對應的伺服器域名。 小程式可以通過兩種方式獲取到使用者資訊,並且獲取到資訊之後,推薦直接存到小程式的全域性變數中,後續直接在全域性變數中讀取,無需在重新獲取。 方法一: 使用 appI

從零開始學前端第十七講--程式開發入門

修真院Web工程師零基礎全能課   本節課內容 微信小程式開發入門   主講人介紹 沁修,葡萄藤技術總監 專案經驗豐富,擅長H5移動專案開發。 專注技術選型、底層開發、最佳程式碼實踐規範總結與推廣。     直播

程式新零售如何通過引流

直至本年,新零售一向備受矚目,間隔提出新零售到現在一年了,自從微信鄰近的小程式功用註冊今後,小程式就成為了實體商家完成新零售的最佳途徑。 微信小程式怎樣為新零售引流?酷可科技和大家聊聊關於新零售的問題。 null 微信小程式新零售 流量的實質是使用者時刻的佔有,線上的流量根本已經

程式前端開發踩坑(一)

之前由於不瞭解微信小程式的整個的執行開發機制,走了很多的彎路,腦子靈光的可能不會遇到,這個主題系列的帖子希望可以幫助到像我一樣理解能力慢的孩子。 不論是開發微信小程式還是說學習任何一門程式語言,最重要的一點是要夯實基礎,不是隻是去看看概念,從hello word開始就要好好的去對待每一行程式碼,軟工是工科,

前端介面開發談程式體驗

本文由雲+社群發表 這段時間有幸加入了一個關於微信小程式的專案開發組,從無到有的根據文件自行學習了小程式的開發過程,前面已經有幾位前輩的文章珠玉在前,我這裡就先從前端介面的開發方面談一談小程式以及我所遇到的問題吧。 在結構和樣式方面,小程式提供了一些常用的標籤與控制元件,比如: view,小程