- 將項(xiàng)目傳到遠(yuǎn)程github上
git init(將本地項(xiàng)目編程git可以管理的倉庫)
git add . (將項(xiàng)目添加到暫存區(qū),.代表所有文件)
git commit -m 'first' (把文件提交到倉庫時(shí)候的說明性文字)
git remote add origin 遠(yuǎn)程項(xiàng)目的地址 (關(guān)聯(lián)到遠(yuǎn)程)
git push -u origin mater/分支 (項(xiàng)目推送到遠(yuǎn)程)
其他的指令:
git status (狀態(tài)查詢)
git fetch origin develop (從遠(yuǎn)程的develop分支將代碼下載到本地)
git branch (查看遠(yuǎn)程分支的名字)
git branch zhang (新建分支zhang)
git checkout master (切換到主分支)
git checkout -b zhang (創(chuàng)建并切換到新分支)
git merge zhang (將新分支提交的改動合并到主分支)
下載項(xiàng)目:
git clone 項(xiàng)目鏈接
cd 項(xiàng)目名/
git status
git checkout -b ... 建一個(gè)自己的分支
git branch 查看所在分支
git pull origin develop 下拉最新的內(nèi)容
- js跨域
(1) nginx 代理(將A挥吵、B通過一個(gè)統(tǒng)一的地址進(jìn)行轉(zhuǎn)發(fā))
(2) jsonp的ajax請求方式
定義:js文件和帶有src屬性的標(biāo)簽不受跨域的影響重父,而json的數(shù)據(jù)格式被js支持。用戶傳遞一個(gè)callback參數(shù)給服務(wù)器忽匈,服務(wù)器返回的數(shù)據(jù)是將callback參數(shù)作為函數(shù)名包裹成json格式房午,這樣隨意定值函數(shù),自動處理數(shù)據(jù)丹允。
優(yōu)點(diǎn):可以跨域郭厌,兼容性好,將controller層和view層分開(請求完后調(diào)用callback回傳結(jié)果雕蔽,將權(quán)限給調(diào)用方)
缺點(diǎn):只支持GET不支持POST請求方式
調(diào)用失敗不返回狀態(tài)碼
安全性低
- px折柠、em、rem
px 表示像素批狐,絕對單位扇售,不改變
em 相對于父元素的字體大小
rem 相對于根元素html的字體大小
- let、const
兩者都只在聲明所在的塊極作用域內(nèi)有效
let 聲明的變量值和類型都可以改變嚣艇,const變量一旦聲明承冰,立即初始化,不可改變
- 行內(nèi)樣式設(shè)置width髓废、height無效巷懈,margin、padding僅左右有效慌洪,上下無效
- call()顶燕、apply()
兩者都是改變函數(shù)體內(nèi)部this的指向凑保,第一個(gè)參數(shù)是this要指向的對象,第二個(gè)參數(shù)apply接受數(shù)組參數(shù)涌攻,call接受連續(xù)參數(shù)欧引。
- es6新特性
1. 新的變量聲明方式 let/const
2. 箭頭函數(shù)的使用
const fn = (a, b) => a + b;
箭頭函數(shù)最直觀的三個(gè)特點(diǎn)。
不需要 function 關(guān)鍵字來創(chuàng)建函數(shù)
省略 return 關(guān)鍵字
繼承當(dāng)前上下文的 this 關(guān)鍵字
3. 模板字符串 ``
4. 函數(shù)默認(rèn)參數(shù) ,不定參數(shù)恳谎,拓展參數(shù)
function add(x = 20, y = 30) {
return x + y;
}
console.log(add());
5. 展開運(yùn)算符 ...
const arr1 = [1, 2, 3];
const arr2 = [...arr1, 10, 20, 30];
// 這樣芝此,arr2 就變成了[1, 2, 3, 10, 20, 30];
6. 類的支持,引入class關(guān)鍵字
7. for of
8. promise 用于異步操作(未完成因痛,可能會完成的操作)婚苹,多重鏈?zhǔn)交卣{(diào)
let p = new Promise((resolve, reject) => {
resolve(1);
});// resolve成功,reject失敗
p.then(value => {
console.log(value);
return value * 2;
}).then(value => {
console.log(value);
}).then(value => {
console.log(value);
return Promise.resolve('resolve');
}).then(value => {
console.log(value);
return Promise.reject('reject');
}).then(value => {
console.log(`resolve: ${value}`);
}, err => {
console.log(`reject: ${err}`);
})
- vuex
vuex是vue中用于管理全局狀態(tài)的一個(gè)組件鸵膏,用于不同組件之間的通信
getters 實(shí)時(shí)監(jiān)聽值膊升,相當(dāng)于計(jì)算屬性
mutations 改變定義的初始值 =>this.$store.commit('方法名')調(diào)用
actions 可包含任意一步操作,出發(fā)mutations里的方法
參數(shù)是content谭企,context.commit('mutations里的方法名')
外部調(diào)用this.$store.dispatch('actions里的方法名')
代碼示例:
const store = new Vuex.Store({
state: {
count: 0
},
mutations: {
increment (state) {
state.count++
}
},
actions: {
increment (context) {
context.commit('increment')
}
}
})
- 雙向綁定的原理
vue中v-model {{}} v-bind
原理:在數(shù)據(jù)變動時(shí)廓译,通過object.defineProperty()劫持各個(gè)屬性的getter和setter,觸發(fā)相應(yīng)的監(jiān)聽回調(diào)债查,update方法實(shí)現(xiàn)數(shù)據(jù)實(shí)時(shí)更新
10.組件傳值
1. a組件向b組件傳值
a: this.$router.push({path:'/b',query:{id:1}})
b接收: this.$route.query.id
或者:
a:<router-link :to="{name:'b',params:{bid:id}}"/>
b:this.$route.params.bid
2.父組件向子組件傳值
父: <child :name-list='names'>
子: props: ['name-list']
3. 子組件向父組件傳值
子(通過事件): <button @click="submit"/>
submit(){
this.$emit('code',888)
}
父:<child @code='getcode'>
11.router和route的區(qū)別
router是跳轉(zhuǎn)的時(shí)候用到非区,route是接收參數(shù)
路由每次跳轉(zhuǎn)都有route,可查詢name盹廷、path征绸、params等
12.怎么在父元素上獲得id?
let $commid=$(e.target).parents('.a').attr('id')
13.css3動畫
@keyframe A{
from to /0% ...100%
}
執(zhí)行animation:A 5s;
14.下拉刷新
touchstart 觸摸開始速和,toumove手指移動位置歹垫,touchend手指松開
- canvas繪圖
var canvas=document.getElementByTagName('canvas') //拿到canvas標(biāo)簽
var ctx=canvas.getContent('2d') //拿到canvas的上下文,‘2d’表示2d畫筆
ctx.moveTo(x,y) //設(shè)置繪制起點(diǎn)
ctx.lineTo(x,y) // 繪制直線
ctx.closePath() //閉合路徑
ctx.strokeStyle='red' //設(shè)置錨邊的樣式
ctx.stroke()
ctx.fillStyle='green' // 填充樣式
ctx.fill()
- sass
(1) $變量名:值颠放,$full-width: 500px;
(2) 計(jì)算功能:+-*/%運(yùn)算符排惨,width: 10px*2//20px
(3) 選擇器嵌套(父選擇器):
div {
hi {
color:red;
@include border-radius;
}
}
(4) 屬性嵌套:
.box {
font: {
size: 12px;
weight: bold;
}
}
(5) 混合器@mixin:
@mixin border-radius{
border-radius: 5px;
}
調(diào)用用@include 方法名
(6) 繼承extend(一個(gè)選擇器可以繼承另一個(gè)選擇器里的樣式)
17.js延遲加載
defer或async
<script src="" async>
18.HTML5響應(yīng)式網(wǎng)頁
(1)頭部加viewport原標(biāo)簽碰凶,width=device-width
(2)寬度不要用絕對值暮芭,用%(百分比)或margin:auto
(3)字體大小不用px(絕對值),用相對大小rem(相對根部html)
(4)流動布局(各個(gè)div是浮動的欲低,不是固定的)
float:left; width:30%;
float:right;width:70%;
如果屏幕寬度小的話div內(nèi)容不會溢出辕宏,后面的元素會自動到下方
(5)引入css3的Media Query模塊,自動探測屏幕寬度砾莱,加載相應(yīng)的css文件
(6)@media/@media screen 媒體查詢
例:@media (max-width:600px){
.box{}
}//當(dāng)設(shè)備寬度小于600px的時(shí)候用.box樣式
@media screen and (max-width: 300px) {
body {
background-color:lightblue;
}
}
PC:>1024px
ipad:768-1024px
iPhone:<768px
(7)圖片自適應(yīng)瑞筐,img{width:100%}
(8)flex布局
flex-direction:row | row-reverse | column | column-reverse; 排列方向
flex-wrap: nowrap | wrap | wrap-reverse;排列不下是否換行
justify-content:flex-start | flex-end | center | space-between |space-around; 項(xiàng)目在主軸的對齊方向
flex-start(默認(rèn)值):左對齊
flex-end:右對齊
center:居中
space-between:兩端對齊,項(xiàng)目之間的間隔都相等
space-around:每個(gè)項(xiàng)目兩側(cè)的間隔相等腊瑟。所以聚假,項(xiàng)目之間的間隔比項(xiàng)目與邊框的間隔大一倍块蚌。
align-items:flex-start | flex-end | center |baseline | stretch;項(xiàng)目在交叉軸上如何對齊
flex-start:交叉軸的起點(diǎn)對齊
flex-end:交叉軸的終點(diǎn)對齊
center:交叉軸的中點(diǎn)對齊
baseline:項(xiàng)目的第一行文字的基線對齊。
stretch(默認(rèn)值):如果項(xiàng)目未設(shè)置高度或設(shè)為auto膘格,將占滿整個(gè)容器的高度峭范。
19.小程序和h5的區(qū)別
(1)運(yùn)行環(huán)境不同,小程序在微信上瘪贱,h5在瀏覽器上纱控,webview中
(2)開發(fā)成本不同
小程序:開發(fā)者工具,規(guī)定開發(fā)規(guī)則
H5:開發(fā)工具里開發(fā)菜秦,要考慮瀏覽器兼容等問題
(3)獲得系統(tǒng)極權(quán)限不同
小程序:權(quán)限更多甜害,如網(wǎng)絡(luò)通信狀態(tài),數(shù)據(jù)緩存等喷户。
(4)運(yùn)行流暢度,h5需要在瀏覽器中渲染唾那,會卡頓
20.小程序的優(yōu)點(diǎn)
開發(fā)成本低访锻,無需下載褪尝,服務(wù)請求延時(shí)與用戶體驗(yàn)感變好
21.小程序中的wxss和css的區(qū)別
wxss圖片引入需使用外鏈地址,沒有body期犬,樣式用import導(dǎo)入
二河哑、微信小程序
1.跳轉(zhuǎn)方式
(1)頁面跳轉(zhuǎn):<navigator url=""/>
(2)函數(shù)跳轉(zhuǎn):wx.navigatorTo({
url=""
})
(3)帶參數(shù)的頁面跳轉(zhuǎn)
<navigator url="/pages?id={{item.id}}&url={{item.img}}"/>
跳轉(zhuǎn)頁面接受參數(shù):
onload:function(options){
this.setData({
id:options.id,
url:options.img
})
}
2.公共變量
在App.js中 globalData:{
userInfo:null
}
其他頁面引用:
userid:getApp().globalData.userInfo
3.代碼模塊化
新建commo.js文件寫公共的代碼龟虎,用model.export導(dǎo)出
其他頁面引用:var common=require('common.js')
common.方法名調(diào)用
4.數(shù)據(jù)交互
wx.request({
//請求地址
url: 'http://127.0.0.1:8000/wechat/addressGetShebei/',
data: {
address
},//發(fā)送給后臺的數(shù)據(jù)
header: {//請求頭
//"Content-Type": "application/json"
"Content-Type": "application/x-www-form-urlencoded"
},
method: 'POST',
dataType:'json',
success: function (res) {
//res.data相當(dāng)于ajax里面的data,為后臺返回的數(shù)據(jù)
//如果在sucess直接寫this就變成了wx.request()的this了
//必須為getdata函數(shù)的this,不然無法重置調(diào)用函數(shù)
that.setData({
shebei:res.data
})
},
fail: function (err) { },//請求失敗
complete: function () { }//請求完成后執(zhí)行的函數(shù)
})
5.綁定數(shù)據(jù)
bindtap 璃谨、{{}}
頁面里data的值被修改需在方法里寫this.setData({a:1})
6.模板和組件(模板邏輯少)
模板引用:@import ‘../templates/index.wxss’
引入標(biāo)簽<template is="模板里的name值",data="模板里要用的值"/>
組件引用要在被引用頁面的json文件配置
三元運(yùn)算符:<view hidden="{{flag?true:false}}"/>
標(biāo)簽做操作的時(shí)候要在{{}}里
wx:for與wx:for-items是循環(huán)數(shù)組 鲤妥,使用{{item.id}}(item是別名)
wx:for-item是給列表起別名
wx:if當(dāng)條件為true開始局部渲染佳吞,hidden始終會被渲染(根據(jù)條件顯示或隱藏)。當(dāng)判定條件頻繁改變時(shí)用hidden
屬性里data-name="a"
獲取event.target.dataset.name
touchstart手動觸摸動作開始
touchmove手指觸摸后移動
touchcancel 手指觸摸動作被打斷棉安,如來電
touchend手指觸摸動作結(jié)束
事件綁定 以bind/catch開頭
bind(不會阻止事件冒泡)底扳,catch(阻止事件冒泡,<canvas/>中無事件冒泡)
引用文件用import/include,src=" "
import會引用目標(biāo)文件贡耽,但目標(biāo)文件里的引用不會引用
include所有都會引用衷模,相當(dāng)于將整個(gè)代碼拷貝到include位置
性能問題:頻繁做setData()操作
不要再data里放太多數(shù)據(jù)或長數(shù)組,用數(shù)據(jù)緩存或者分頁渲染
下拉刷新:onPullDownRefresh()函數(shù)
上拉加載:onReachBottom()
8.頁面?zhèn)髦?/p>
(1)全局變量:
在App.js中 globalData:{
userInfo:null
}
其他頁面引用:
userid:getApp().globalData.userInfo
(2)本地緩存:
存值wx.setStorageSync('a',a)
取值wx.getStorageSync('a')
刪除wx.removeStorage({key:'a'})
(3)父向子
wx.navigatorTo({url:'...?name=1&id=2'})
取值:onload:function(options){
this.setData({
id:options.id
})
}
獲取其他頁面的對象原型
E.js data:{
index:1
}
跳轉(zhuǎn)到F頁面蒲赂,寫一個(gè)方法
changeIndex:function(){
var pages=getCurrentPages();返回當(dāng)前棧的路徑和頁面的數(shù)據(jù)
var prevPage=pages[pages.length-2];
prevPage.setData({
index:0
})
}
此方法可以操作頁面堆棧里的頁面數(shù)據(jù)阱冶,后一級頁面對上一級頁面群做數(shù)據(jù)管理
9.小程序里嵌入H5頁面
<web-view src=""/>
web-view自動鋪滿整個(gè)頁面,會覆蓋頁面的其他內(nèi)容
H5跳轉(zhuǎn)回小程序滥嘴,引入微信的JSDK
wx.miniProgram.navigatorTo({url:'/path/to'})
10.生命周期函數(shù)
app.js文件:onLanch 初始化完成木蹬,出發(fā)onlanch
onShow 小程序啟動或從后臺進(jìn)入前臺顯示,觸發(fā)onshow
onHide 小程序隱藏若皱,從后臺進(jìn)入前臺觸發(fā)
onError 發(fā)生腳本錯(cuò)誤或api調(diào)用失敗
page頁面:onLoad 監(jiān)聽頁面加載
onReady 監(jiān)聽頁面初次渲染完成
onShow 監(jiān)聽頁面顯示
onHide 小程序隱藏镊叁,從后臺進(jìn)入前臺觸發(fā)
onUnload 監(jiān)聽頁面卸載
App()必須在APP.js中注冊有梆,不能注冊多個(gè)
通過getApp()獲取實(shí)例后不要調(diào)用生命周期函數(shù)
不要再onLanch時(shí)調(diào)用getCurrentPage(),此時(shí)page還沒生成