第一篇:小程序之語(yǔ)法篇

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

    api語(yǔ)法的介紹

    一、盒子模型Flex

    1、flex-wrap:

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

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

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

    space-between屬性圖形展示:

    3、align-content

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

    4、align-items

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

    5、示例

    1)讓容器的子View居中顯示在容器(父View)中添加:display: flex;align-items: center;2)讓一個(gè)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相關(guān)的api

    1、變量

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

    2、基本數(shù)據(jù)類型Boolean

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

    3、函數(shù)

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

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

    非page中定義:

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

    總結(jié): 1.第一種定義必須在最后面要加“,”逗號(hào),而第二種方式不能加 2.與java不同的是,函數(shù)的參數(shù)params不用指定類型,所以,理論上調(diào)用方法的時(shí)候可以傳遞任意類型。愛掏網(wǎng) - it200.com但是一般不這么做。愛掏網(wǎng) - it200.com個(gè)人認(rèn)為還是java嚴(yán)謹(jǐn)更好,可讀性強(qiáng)。愛掏網(wǎng) - it200.com 3.參數(shù)params的個(gè)數(shù)沒(méi)有限制

    (2)回調(diào)函數(shù) 1)函數(shù)定義

    function request(onFail){//調(diào)用接口wx.request({success: function (res) { //接口返回?cái)?shù)據(jù)onFail(res)})}

    2)函數(shù)調(diào)用

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

    (3)注意事項(xiàng)

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

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

    4、對(duì)象的變量

    class Person{String name;int age;
    }

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

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

    5、export使用

    在調(diào)用一個(gè)類中的方法或者屬性值時(shí),必須要在被調(diào)用的方法和屬性值,定義的時(shí)候用export聲明

    6、disableScroll使用

    問(wèn)題描述: 有時(shí)候,小程序跑在蘋果手機(jī)上時(shí),會(huì)左右滑動(dòng)退出,也會(huì)上下滑動(dòng),這樣體驗(yàn)不好。愛掏網(wǎng) - it200.com這個(gè)時(shí)候要禁止滑動(dòng)。愛掏網(wǎng) - it200.com

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

    7、頁(yè)面page數(shù)據(jù)的獲取與設(shè)置

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

    8、獲取所有的頁(yè)面

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

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

    9、showToast時(shí)長(zhǎng)設(shè)置失效問(wèn)題

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

    10、reLaunch跳轉(zhuǎn)失效問(wèn)題

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

    以上對(duì)于小白相信是很實(shí)用的一些知識(shí)。愛掏網(wǎng) - it200.com下一篇繼續(xù)講解關(guān)于小程序中,代碼冗余、解耦的問(wèn)題分析,以及解決策略。愛掏網(wǎng) - it200.com

    轉(zhuǎn):https://juejin.im/post/5b9cce5e5188255c304fe14d



    聲明:所有內(nèi)容來(lái)自互聯(lián)網(wǎng)搜索結(jié)果,不保證100%準(zhǔn)確性,僅供參考。如若本站內(nèi)容侵犯了原著者的合法權(quán)益,可聯(lián)系我們進(jìn)行處理。
    發(fā)表評(píng)論
    更多 網(wǎng)友評(píng)論0 條評(píng)論)
    暫無(wú)評(píng)論

    返回頂部

    主站蜘蛛池模板: 97久久精品无码一区二区| 88国产精品视频一区二区三区| 日本成人一区二区| 亚洲av成人一区二区三区观看在线 | 国产主播一区二区| 无码aⅴ精品一区二区三区| 精品aⅴ一区二区三区| 精品国产一区二区三区久 | 精品视频一区在线观看| 亚洲午夜在线一区| 久久精品国产一区二区三区日韩| 国产精品资源一区二区| 人妻av无码一区二区三区| 曰韩精品无码一区二区三区| 动漫精品一区二区三区3d| 国内精品视频一区二区三区| 3d动漫精品啪啪一区二区中文| 2014AV天堂无码一区| 国产精品亚洲不卡一区二区三区 | 亚洲一区精品无码| 精品伦精品一区二区三区视频| 欧洲精品一区二区三区| 欧美亚洲精品一区二区| 色噜噜狠狠一区二区三区| 蜜臀AV一区二区| 日韩爆乳一区二区无码| 精品无码一区二区三区爱欲 | 亚洲精品无码一区二区| 色噜噜狠狠一区二区| 亚洲福利一区二区精品秒拍| 乱色精品无码一区二区国产盗| 久久精品无码一区二区三区| 国产综合无码一区二区三区| 亚洲国产精品一区二区三区久久 | 97精品一区二区视频在线观看 | 国产午夜精品一区二区三区| 亚洲线精品一区二区三区影音先锋 | 日韩精品一区二区三区中文字幕| 国产一区二区影院| 性色AV 一区二区三区| 亚洲爽爽一区二区三区|