微信小程序

創(chuàng)建項目

1.微信公眾平臺  注冊豁辉,登錄下載開發(fā)工具
2.登錄開發(fā)工具假夺,新建項目(最好是空的文件目錄荐绝,項目的appid在微信公眾平臺--小程序--開發(fā)--開發(fā)設(shè)置--開發(fā)者id)
    創(chuàng)建好項目后在里面有一個基本的目錄結(jié)構(gòu)(project.config.json配置文件干旁,這里面如果想運行別人的微信小程序摧扇,需要把appid更改為自己的appid)
    在小程序中只有四種文件(.js(邏輯,實例)  .json(配置) .wxml(頁面結(jié)構(gòu))  .wxss(樣式表))
3.創(chuàng)建一個實例:
app.js
    app({...})  里面存放的是生命周期
    分為頁面的生命周期和小程序的生命周期

app.json
    {...}   里面是全局 的配置
    
    pages:表示有是個頁面,哪一個在前面就表示是首頁
        里面會有自動創(chuàng)建好的頁面缘滥,或者自己手動創(chuàng)建修改
        內(nèi)部沒有dom元素
            塊級元素:<view></view>
            行內(nèi)元素:<text></text>
        設(shè)置樣式在wxss中設(shè)置可以直接是標簽名申鱼,也可以使用class選擇器進行設(shè)置
        不能使用sass后者less預(yù)處理語言
        小程序是移動端风钻,就需要適配移動端布局英妓,有一個新的單位rpx挽放,寬度一般是750rpx
    window:窗口的配置
        如果設(shè)置這些配置時顏色只支持16進制的
        如果需要設(shè)置導(dǎo)航欄的樣式需要微信版本大于6.6.0才能夠支持
        移動端需要做下拉刷新和上拉加載
        只要是配置頁面的界面顯示
    networkTimeout:網(wǎng)絡(luò)請求的時間(響應(yīng)時間過長時斷掉)
    tabBaer:可以設(shè)置小程序的導(dǎo)航欄(最多5個最少2個,由數(shù)組組成)
        "tabBaer":{
            //設(shè)置樣式蔓纠,邊框顏色及選中的顏色辑畦,定位等
            "list":[
                {
                    "pagepath":"",    //需要設(shè)置的路徑
                    "text":"",     //導(dǎo)航欄的名稱
                    "iconpath":"",   //默認的圖標
                    "selectIconpath":""   //選中下的樣式
                },
                  {
                    "pagepath":"",    //需要設(shè)置的路徑
                    "text":""     //導(dǎo)航欄的名稱
                }
            ]
        }

    注意:局部的配置可以覆蓋全局 的配置 
4.數(shù)據(jù)的傳遞
    對應(yīng)的js文件中如果需要傳遞數(shù)據(jù)需要用到
    在小程序中腿倚,沒有window對象
        page({
            data:{
                name:"123"
            },
            //自定義事件,單純的數(shù)據(jù)綁定類似vue纯出,但是修改數(shù)據(jù)類似于react,使用的是this.setData({name:'32432'})
            changeName(e){
                console.log("事件對象",e)   //事件對象猴誊,事件對象傳遞參數(shù)需要使用的是data-haha="123"
                console.log('456')
            }
        })
    事件分為冒泡事件和非冒泡事件
5.小程序中的指令
    條件渲染:
        <view wx:if="{{age<20}}">青年</view>
        <view wx:else>青年</view>
        <button bindlongtap="add">add</button> 
        add(){
            let age=++this.data.age
            this.setData({age})
        }
    列表渲染:
        wx:for   wx:key     wx:for-item    wx:for-idnex
        <text wx:for="{{info}}">{{item}}{{index}}</text>
        <text wx:for="{{info}}" wx:for-item="haha" wx:for-index="xixi">{{xixi}}{{haha}}</text>
6.組件(當做antd使用)
    hover-class='test'  鼠標按下時的樣式
    swiper   參考官方文檔

    <cover-image src=""></cover-image>這種方式設(shè)置的圖片是自動按比例縮放潦刃,類似背景圖片自適應(yīng)大小進行填充
    picker   //類似于一個彈出層

經(jīng)常使用的api及地圖組件

獲取系統(tǒng)的信息:getSystemInfoSync()
    getSystemInfoSync(){
        let result = wx.getSystemInfoSync()
        console.log(result)
    }
    調(diào)用這個方法即可打印設(shè)備的系統(tǒng)信息
路由:配套一共五個
    1.wx.switchTab()
        跳轉(zhuǎn)到 tabBar 頁面,并關(guān)閉其他所有非 tabBar 頁面懈叹,需要在app.json文件中配置字段乖杠,路徑后面不能跟參數(shù)
        goPage(){
            wx.switchTab({
                url:"要跳轉(zhuǎn)的頁子路徑",
                fail(err){       //跳轉(zhuǎn)失敗時的錯誤
                    console.log(err)   
                }
            })
        }
    跳轉(zhuǎn)后回不去澄成,無數(shù)據(jù)
    2.wx.reLaunch()
        關(guān)閉所有頁面胧洒,打開到應(yīng)用內(nèi)的某個頁面,可以傳遞參數(shù)畏吓,
        goPage(){
            wx.reLaunch({
                url:"要跳轉(zhuǎn)的路徑?us=123&ps=123"  //傳遞參數(shù)跟在路徑后面,在目標頁面的onlanch生命周期中接收參數(shù)卫漫,不帶反回
            })
        }
    3.wx.redirectTo()
        關(guān)閉當前的頁面菲饼,跳轉(zhuǎn)頁面,不允許跳轉(zhuǎn)tabbar頁面列赎,可以傳遞參數(shù)
        goPage(){
            wx.redirectTo({
                url:"要跳轉(zhuǎn)的路徑?us=123&ps=456"
            })
        }
    4.wx.navigateTo()
        保留當前頁面宏悦,跳轉(zhuǎn)到應(yīng)用內(nèi)的某個頁面。但是不能跳到 tabbar 頁面包吝。使用 wx.navigateBack 可以返回到原頁面饼煞。小程序中頁面棧最多十層。多的會把前面的覆蓋掉
        goPage(){
            wx.navigateTo({
                url:"要跳轉(zhuǎn)的路徑?us=123&ps456"
            })
        }
        自帶反回'<'
    wx.navigateTo()
        關(guān)閉當前頁面诗越,返回上一頁面或多級頁面砖瞧。可通過 getCurrentPages 獲取當前的頁面棧嚷狞,決定需要返回幾層块促。
界面交互相關(guān)
    1.wx.showToast()
        顯示消息提示框,可以設(shè)置提示內(nèi)容圖標延遲時間
        success(){
            wx.showToast({
            title: '成功',
            icon: 'success',
            duration: 1000
            })
        }
    2.wx.showModal()
        顯示模態(tài)框,能夠設(shè)置顯示的提示標題提示的內(nèi)容及取消按鈕,基本的樣式等
        success(){
            wx.showModal({
            title: '提示',
            content: '這是一個模態(tài)彈窗',
            success (res) {
                if (res.confirm) {
                console.log('用戶點擊確定')
                } else if (res.cancel) {
                console.log('用戶點擊取消')
                }
            }
            })
        }
    3.wx.showActionSheet()
        顯示操作菜單,能夠設(shè)置按鈕的文字數(shù)組最大長度為6位床未,顏色及回調(diào)函數(shù)等
        showActionSheet(){
            wx.showActionSheet({
            itemList: ['A', 'B', 'C'],
            success (res) {
                console.log(res.tapIndex)
            },
            fail (res) {
                console.log(res.errMsg)
            }
            })
        } 
    4.下拉刷新的監(jiān)聽
        onPullDownRefresh(){
            console.log('刷新了')
            wx.showLoading({
                title:"數(shù)據(jù)加載ing",
            })
            setTimeout(()=>{
                wx.hideloading()
                wx.stopPullDownRefresh()
            },1000)
        }
    5.導(dǎo)航欄
        wx.setNavigationBarTitle()
        動態(tài)設(shè)置當前頁面的標題
            setNavigationBarTitle(){
                wx.setNavigationBarTitle({
                title: '當前頁面'
                })
            }
地圖組件
    使用場景:打卡竭翠,定位
    1.顯示地圖
    2.獲取使用者所在的位置
    3.將地圖的中心點定位到地圖所在的位置
    4.氣泡
    5.點擊氣泡彈出活動信息
    6.數(shù)據(jù)過濾功能
    7.路線圖
    
    需要使用地圖組件
    <map id="map"
    longitude="113.324520"  //經(jīng)度
    latitude="23.099994"    //緯度
    scale="14"   //縮放

    controls="{{controls}}"  //點擊控件的時候觸發(fā)的事件,controls事件的api需要寫在data中使用數(shù)組包裹
    bindcontroltap="controltap" //控件 

    markers="{{markers}}"     //頁面中的信息即硼,markers中的事件也是需要寫在data中使用數(shù)組包裹
    bindmarkertap="markertap"   // 當點擊這些信息的時候觸發(fā)的事件

    polyline="{{polyline}}" 
    bindregionchange="regionchange"
    show-location   //顯示位置
    style="width: 100%;
    height: 300px;"></map>
    放入到wxml中逃片,在map.js中需要先獲取當前位置的定位坐標
    放在生命周期中:
    Page({ data:{
        longitude:0,
        latitude:0,
        controls:[     //頁面中可以存在多個數(shù)組,多個控件只酥,是通過id來區(qū)分的
        {
            id:'c01',  //在控件點擊事件回調(diào)會返回此id
            position:{left:20,top:50,width:50,height:50},  //控件相對地圖位置
            clickable:true,     //默認不可點擊
            iconPath:"/common/icon/all.png"  //項目目錄下的圖片路徑褥实,支持本地路徑、代碼包路徑
        }
        ]裂允,
         markers:[
        {
            id:1,     //marker 點擊事件回調(diào)會返回此 id损离。建議為每個 marker 設(shè)置上 number 類型 id,保證更新 marker 時有更好的性能绝编。
            latitude:40.22077,   //緯度范圍值在-90-90之間 
            longitude:116.23128, //經(jīng)度范圍在-180-180之間
            title:"16號看電影",    //信息
            iconPath:'/common/icon/all.png',   //要顯示的圖標
            width:50,  //設(shè)置圖標的大小
            height:50
        }
        ]
    },
    onLoad(){
        this.getPostion()
        wx.updateShareMenu({     //設(shè)置分享
        withShareTicket: true,
        success (res) {
            console.log(res)
         },
         fail(err){
             console.log(err)
         }
        })
    },    
    getPostion(){
        wx.getLocation({
            type:'wgs84',
            success(res){    //成功的回掉函數(shù)
                const latitude=res.latitude
                const longitude=res.longitude
                this.setData({ latitude, longitude})
            }
        })
    },
    controltap(e){
        console.log('控件被點擊了',e)
        if (e.controlId=='c01'){     //在這里通過id來區(qū)分是哪一個控件進行判斷僻澎,然后重新調(diào)用下      this.getPostion()這個方法就可以了,如果說頁面的數(shù)據(jù)比較多的情況下過濾數(shù)據(jù)需要提前在markers中的數(shù)據(jù)加入type數(shù)據(jù)類型,然后對其進行判斷即可
        this.getPostion()
        }else{
            let result=this.data.markers.filter((item)=>{
                return item.type=='food'
            })
            this.setData({markers:result})
        }
    }十饥,
    markertap(e){
        console.log(e)
    }
    })
網(wǎng)絡(luò)請求
    getNewData(){
        let url:"網(wǎng)址"   //請求的網(wǎng)址
        wx.request({
            url:url,
            method:"post",   //請求的方式
            data:{},   //傳參
            success(res){   //成功的回調(diào)函數(shù)
                console.log(res)
            }
        })
    }
這里應(yīng)該注意到的是請求的接口沒有跨域窟勃,只需要在微信公眾平臺配置即可:
    首頁--開發(fā)--開發(fā)設(shè)置--服務(wù)器域名
    在里面添加即可一個月只能添加5次,請求的時候不支持http的可以在開發(fā)工具 中的設(shè)置本地設(shè)置中勾選不效驗合法域名即可
存值
    setStorage(){
        wx.setStorageSync('userInfo',{  user:123,arr:[1,2,3]})
    },
取值
    getStorage(){
        let reuslt=wx.getStorageSync('userInfo')
        console.log(reuslt)
    },
清空
    clearStorage(){
         wx.clearStorageSync()
    }
打開騰訊地圖:wx.openLocation
    openMap(){
        wx.openLocation({
            latitusde:44,    
            longitude:116,    //當前默認的經(jīng)緯度
            fail(err){      //捕獲錯誤
                conosle.log(err)
            }
        })
    }
選擇位置:wx.chooseLocation
    在使用選擇位置之前需要提前設(shè)置分享頁面(wx.updateShareMenu)api逗堵,在onLoad方法中秉氧,剛開始進入頁面就要調(diào)用
    clooseMap(){
    wx.chooseLocation({
        success:function(res){
            console.log(res)
        }
    })
    }
電話:wx.makePhoneCall
    phone(){
        wx.makePhoneCall({
            phoneNumber:'12306'
        })
    }
掃碼:wx.scanCode
   參數(shù): onlyFromCamera(是否只能從相機掃碼,不允許從相冊選擇圖片  )   scanType(掃碼類型   )
   scanCode(){
      wx.scanCode({
           onlyFromCamera: true,
            success (res) {
                console.log(res)
            }
      }) 
   }
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末蜒秤,一起剝皮案震驚了整個濱河市汁咏,隨后出現(xiàn)的幾起案子亚斋,更是在濱河造成了極大的恐慌,老刑警劉巖攘滩,帶你破解...
    沈念sama閱讀 218,546評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件帅刊,死亡現(xiàn)場離奇詭異,居然都是意外死亡漂问,警方通過查閱死者的電腦和手機赖瞒,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,224評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來级解,“玉大人冒黑,你說我怎么就攤上這事∏诨” “怎么了?”我有些...
    開封第一講書人閱讀 164,911評論 0 354
  • 文/不壞的土叔 我叫張陵掩驱,是天一觀的道長芒划。 經(jīng)常有香客問我,道長欧穴,這世上最難降的妖魔是什么民逼? 我笑而不...
    開封第一講書人閱讀 58,737評論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮涮帘,結(jié)果婚禮上拼苍,老公的妹妹穿的比我還像新娘。我一直安慰自己调缨,他們只是感情好疮鲫,可當我...
    茶點故事閱讀 67,753評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著弦叶,像睡著了一般俊犯。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上伤哺,一...
    開封第一講書人閱讀 51,598評論 1 305
  • 那天燕侠,我揣著相機與錄音,去河邊找鬼立莉。 笑死绢彤,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的蜓耻。 我是一名探鬼主播茫舶,決...
    沈念sama閱讀 40,338評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼媒熊!你這毒婦竟也來了奇适?” 一聲冷哼從身側(cè)響起坟比,我...
    開封第一講書人閱讀 39,249評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎嚷往,沒想到半個月后葛账,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,696評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡皮仁,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,888評論 3 336
  • 正文 我和宋清朗相戀三年籍琳,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片贷祈。...
    茶點故事閱讀 40,013評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡趋急,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出势誊,到底是詐尸還是另有隱情呜达,我是刑警寧澤,帶...
    沈念sama閱讀 35,731評論 5 346
  • 正文 年R本政府宣布粟耻,位于F島的核電站查近,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏挤忙。R本人自食惡果不足惜霜威,卻給世界環(huán)境...
    茶點故事閱讀 41,348評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望册烈。 院中可真熱鬧戈泼,春花似錦、人聲如沸赏僧。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,929評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽次哈。三九已至胎署,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間窑滞,已是汗流浹背琼牧。 一陣腳步聲響...
    開封第一講書人閱讀 33,048評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留哀卫,地道東北人巨坊。 一個月前我還...
    沈念sama閱讀 48,203評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像此改,于是被迫代替她去往敵國和親趾撵。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,960評論 2 355

推薦閱讀更多精彩內(nèi)容