第一篇:小程序之語法篇

    關于Android的技術博客好久沒更新了,為什么呢?答案是由于公司業務需求,從一個Android移動端攻城獅轉變成了一個寫小程序的前端攻城獅。愛掏網 - it200.com雖然小程序上手比較容易,但是,這個是相對的————前端攻城獅上手比較容易。愛掏網 - it200.com而對于移動端,那絕對的是nonono~了。愛掏網 - it200.com 相信如果是從Android轉過去的,會有各種的吐槽。愛掏網 - it200.com不僅僅是語法的規范,語法簡直弱爆了,還有編譯器的問題。愛掏網 - it200.com微信web開發工具相對于Android Studio,不管是代碼補全,還是快捷鍵、插件的使用,尤其是不能查看源碼,這就太low了。愛掏網 - it200.com這個時候還是特別感謝自己是一個Android攻城獅了。愛掏網 - it200.com吐槽部分就此告一段落,接下來我將會從一個初學者的身份,當然,此后的文章不會對小程序的知識點一一都做很細致的介紹,主要是對比Android的一些思想,進行一些個人的想法闡述。愛掏網 - it200.com 點擊我查看完整項目

    api語法的介紹

    一、盒子模型Flex

    1、flex-wrap:

    nowrap(默認):不換行。愛掏網 - it200.comwrap:換行,第一行在上方。愛掏網 - it200.comwrap-reverse:換行,第一行在下方。愛掏網 - it200.com

    2、justify-content: 所有子view在父View顯示的位置

    flex-start(默認值):左對齊
    flex-end:右對齊
    center:居中
    *space-between:兩端對齊,項目之間的間隔都相等。愛掏網 - it200.com因此這個可以認為是設置權重布局,每個子View占一份。愛掏網 - it200.com如果子View只有一個,則等同于flex-start
    *space-around:平均分布在該行上,兩邊留有一半的間隔空間。愛掏網 - it200.com項目之間的間隔比項目與邊框的間隔大一倍。愛掏網 - it200.com如果(作用在父view上)只有一個子view,則其實就是讓子View居中對齊

    space-between屬性圖形展示:

    3、align-content

    內容居中。愛掏網 - it200.com只適用于多行的flex容器,單行不起作用flex-start:與交叉軸的起點對齊。愛掏網 - it200.comflex-end:與交叉軸的終點對齊。愛掏網 - it200.comcenter:與交叉軸的中點對齊。愛掏網 - it200.comspace-between:與交叉軸兩端對齊,軸線之間的間隔平均分布。愛掏網 - it200.comspace-around:每根軸線兩側的間隔都相等。愛掏網 - it200.com所以,軸線之間的間隔比軸線與邊框的間隔大一倍。愛掏網 - it200.comstretch(默認值):軸線占滿整個交叉軸。愛掏網 - it200.com

    4、align-items

    讓每個View在父view的對齊方式。愛掏網 - it200.com適用于所有的flex容器。愛掏網 - it200.comflex-start:交叉軸的起點對齊。愛掏網 - it200.comflex-end:交叉軸的終點對齊。愛掏網 - it200.comcenter:交叉軸的中點對齊。愛掏網 - it200.combaseline: 項目的第一行文字的基線對齊。愛掏網 - it200.comstretch(默認值):如果項目未設置高度或設為auto,將占滿整個容器的高度。愛掏網 - it200.com

    5、示例

    1)讓容器的子View居中顯示在容器(父View)中添加:display: flex;align-items: center;2)讓一個View布局顯示在最底層,或者最上層,類似于FramLayout布局使用z-index屬性:

    {position:absolute;left:0px;top:0px;z-index:-1;}注意:1)z-index只能在absolute 中起作用2)z-index:-1,被修飾的該View在最底層顯示(可以作為背景)z-index:1 ,在最外層顯示

    二、js相關的api

    1、變量

    我們知道,在Java中,如果是在整個類中需要用到的對象,我們將在類中聲明為成員變量,在某個具體方法中有效的聲明為局部變量。愛掏網 - it200.com那么對應的小程序是:
    var:java中的成員變量
    let:java中局部變量

    2、基本數據類型Boolean

    var test0 = "" //falsevar test1 = "aaaaaaaa" // truevar test2 = null // falsevar test3 = 11 // truevar test4 = 0 // falsevar test5 = {} // true總結:這個與java區別還是很大的1)對于數字型(int、float),只要是非0的數字都是true;2)對于字符串(String),只有是null、和“”空串才是false,其他都是false3)對于對象,除了對象是null才是false,其他都是true。愛掏網 - it200.com哪怕這個對象是一個空的對象{}

    3、函數

    (1)函數定義 在page中定義:

    onShow: function (params) {//方法體},

    非page中定義:

    function test(params){//方法體
    }

    總結: 1.第一種定義必須在最后面要加“,”逗號,而第二種方式不能加 2.與java不同的是,函數的參數params不用指定類型,所以,理論上調用方法的時候可以傳遞任意類型。愛掏網 - it200.com但是一般不這么做。愛掏網 - it200.com個人認為還是java嚴謹更好,可讀性強。愛掏網 - it200.com 3.參數params的個數沒有限制

    (2)回調函數 1)函數定義

    function request(onFail){//調用接口wx.request({success: function (res) { //接口返回數據onFail(res)})}

    2)函數調用

    wx.cyou.cache.getCacheValue("key_test", function(result){console.log("result==", result)})

    (3)注意事項

    1)小程序不支持函數的重載和函數的重寫
    2)函數調用函數的時候,函數方法不支持直接傳遞。愛掏網 - it200.com看下面的示例:

    function request1(function1) {request2(function1)}問題: 這在request1方法調用request2的時候,參數也是一個函數function1,直接將function1傳遞給request2是不可以的解決方式:function request1(function1) {request2(new function{function1()}})}在request2方法的回調函數中去調用function1方法

    4、對象的變量

    class Person{String name;int age;
    }

    在java中,如果要遍歷獲取Person屬性值name、age,和屬性類型String、int。愛掏網 - it200.com都是用反射去實現的。愛掏網 - it200.com那么,在小程序中卻比java 簡單粗暴很多。愛掏網 - it200.com具體實現

    for (var propertyName in Person){var name = propertyName //對象Person的屬性(String、int)var value = testInfo[propertyName] // 對象Person的屬性值(name、age)}

    5、export使用

    在調用一個類中的方法或者屬性值時,必須要在被調用的方法和屬性值,定義的時候用export聲明

    6、disableScroll使用

    問題描述: 有時候,小程序跑在蘋果手機上時,會左右滑動退出,也會上下滑動,這樣體驗不好。愛掏網 - it200.com這個時候要禁止滑動。愛掏網 - it200.com

    在app.json中,將disableScroll值設置為true 就可以了:"window": {"disableScroll": true}

    7、頁面page數據的獲取與設置

    let pages = getCurrentPages()let curPage = pages[pages.length - 1] //獲取當前頁面if (curPage.route == url){ //比較獲取的頁面的url是否跟實際的一致(如url:"pages/order/order")curPage.setData({ //設置數據usingOrderList: usingOrderList})}

    8、獲取所有的頁面

    let pages = getCurrentPages()// 獲取上一個頁面let prePage = pages[pages.length - 2]//給頁面設置數據prePage.setData({refreshUserInfo:true})//返回到上一個頁面wx.navigateBack({delta: 1})

    注意事項: 調用getCurrentPages()不需要在page環境中(可以視為Android中的Context環境),可以在任何地方直接獲取,即util等自定義類中同樣生效。愛掏網 - it200.com類似的還有wx.開頭的方法

    9、showToast時長設置失效問題

    let title = new String(msg)//延時彈toast,是為了解決有時候在接口請求后,設置的duration時間不起作用setTimeout(function () {wx.showToast({title: title,duration: 1200,icon: "none"})}, 100)

    10、reLaunch跳轉失效問題

    //延時跳轉,是為了解決有時候wx.reLaunch不起作用,設置的時間不起作用setTimeout(function(){wx.reLaunch({url: '/pages/home/home'})},100)

    以上對于小白相信是很實用的一些知識。愛掏網 - it200.com下一篇繼續講解關于小程序中,代碼冗余、解耦的問題分析,以及解決策略。愛掏網 - it200.com

    轉:https://juejin.im/post/5b9cce5e5188255c304fe14d



    聲明:所有內容來自互聯網搜索結果,不保證100%準確性,僅供參考。如若本站內容侵犯了原著者的合法權益,可聯系我們進行處理。
    發表評論
    更多 網友評論0 條評論)
    暫無評論

    返回頂部

    主站蜘蛛池模板: 在线观看午夜亚洲一区| 亚洲一区二区三区电影| 日本一道高清一区二区三区| 精品不卡一区中文字幕| 亚洲美女视频一区二区三区| 国产成人精品无人区一区| 无码人妻啪啪一区二区| 亚洲bt加勒比一区二区| 国产乱子伦一区二区三区| 亚洲欧洲无码一区二区三区| 日韩精品成人一区二区三区| 一区二区三区精品高清视频免费在线播放| 精品少妇ay一区二区三区| 久久久久无码国产精品一区| 中文字幕一区日韩在线视频| 无码精品蜜桃一区二区三区WW| 午夜一区二区在线观看| 亚洲一区二区三区在线| 久久亚洲一区二区| 久久AAAA片一区二区| 高清一区二区三区| 精品在线一区二区三区| 国产精品亚洲一区二区在线观看| 亚洲一区电影在线观看| 无码人妻精品一区二区三区久久 | 自慰无码一区二区三区| 一级毛片完整版免费播放一区| 亚洲大尺度无码无码专线一区| 亚洲中文字幕在线无码一区二区 | 久久国产视频一区| 激情一区二区三区| 久久亚洲综合色一区二区三区 | av一区二区三区人妻少妇| 国产成人久久精品区一区二区| 日本一区二区在线播放| 久久国产精品无码一区二区三区| 人妻体内射精一区二区三四| 日韩一区二区在线观看视频| 亚洲福利一区二区精品秒拍| 精品一区精品二区制服| 欧美日韩精品一区二区在线视频 |