wxs是專(zhuān)門(mén)用于wxml頁(yè)面的,如果你有在頁(yè)面中使用js腳本的需求可以使用,但是wxs是不能被其他js文件引用的。
目前我很少wxs,大多數(shù)工作都是在js中完成的。
這里是我記錄的關(guān)于wxs的文章:
微信小程序:使用wxs檢測(cè)郵箱格式實(shí)例
微信小程序:新功能WXS(2017.08.30新增)
$表示字符串的結(jié)尾,是特殊字符,使用RegExp的時(shí)候,需要使用兩個(gè)\\轉(zhuǎn)義:
const template = "the age of ${name} is ${age}";
const data = { name: "xiaoming", age: 8};
console.log(render(template, data));
// 輸出: "the age of xiaoming is 8"
function render(template,data) {
for (key in data) {
if(key) {
console.log(key);
var re = new RegExp("\\${"+key+"}");
// var re = "${" + key + "}"; // 這塊直接使用字符串就行,不用正則也可以
console.log(re,data[key]);
template = template.replace(re,data[key]);
// console.log("test:",template.replace("${name}","xiaoming"));
console.log(template);
}
}
}答案來(lái)了。
const axios = require('axios')
// 下面代碼發(fā)送一個(gè)post請(qǐng)求到一個(gè)服務(wù)器
axios.post('驗(yàn)證驗(yàn)證碼的目標(biāo)url', {
telephone: "17202345234" // 帶上手機(jī)號(hào)參數(shù)
})
.then(function (response) { // 后端處理成功,給你返回一個(gè)驗(yàn)證碼數(shù)據(jù),數(shù)據(jù)通過(guò)response讀取
console.log(response.testnumber);
return axios.post('獲取驗(yàn)證碼成功再發(fā)送一次請(qǐng)求的地址',{
password: "我是密碼",
telephone: "17202345234",
noteinfo: "我是備注"
})
})
.then(function(res){
//完成注冊(cè)了
console.log("注冊(cè)完成");
})
.catch(function (error) { // 如果請(qǐng)求失敗就走這里了
console.log(error);
});http://www.cnblogs.com/mdengc... google了一下 實(shí)現(xiàn)這v-selectable 不知道符合要求不
export default (Vue, options = {}) =>{
const listener = (ele, binding) =>{
let reactArea = {
startX: 0,
startY: 0,
endX: 0,
endY: 0
}
//是否一直按下鼠標(biāo)
let isMouseDown = false
let areaSelect = {}
//將元素定位改為relative
ele.style.position = 'relative'
ele.addEventListener('mousedown', function(e) {
reactArea.startX = e.layerX;
reactArea.startY = e.layerY;
isMouseDown = true
})
ele.addEventListener('mousemove', function(e) {
if(isMouseDown){
let preArea = ele.getElementsByClassName('v-selected-area')
if(preArea.length){
ele.removeChild(preArea[0])
}
reactArea.endX = e.layerX
reactArea.endY = e.layerY
let leftValue = 0
let topValue = 0
let widthValue = Math.abs(reactArea.startX - reactArea.endX)
let heightValue = Math.abs(reactArea.startY - reactArea.endY)
if(reactArea.startX >= reactArea.endX){
leftValue = reactArea.endX
}else{
leftValue = reactArea.startX
}
if(reactArea.startY > reactArea.endY ){
topValue = reactArea.endY
}else{
topValue = reactArea.startY
}
//判斷同時(shí)有寬高才開(kāi)始畫(huà)虛線框
if(reactArea.startX != reactArea.endX && reactArea.startY !=reactArea.endY){
areaSelect = document.createElement('div')
areaSelect.classList.add("v-selected-area")
areaSelect.style.position = "absolute";
areaSelect.style.left = leftValue + 'px'
areaSelect.style.top = topValue + 'px'
areaSelect.style.width = widthValue + 'px'
areaSelect.style.height = heightValue + 'px'
areaSelect.style.border = "1px dashed grey"
ele.append(areaSelect)
}
let children = ele.getElementsByTagName('li')
for(let i =0 ; i < children.length ; i ++ ){
let childrenHeight = children[i].getBoundingClientRect().height
let childrenWidth = children[i].getBoundingClientRect().width
//每個(gè)li元素的位置
let offsetLeft = children[i].offsetLeft
let offsetTop = children[i].offsetTop
//每個(gè)li元素的寬高
let endPositionH = childrenHeight + offsetTop
let endPositionW = childrenWidth + offsetLeft
//五個(gè)條件滿足一個(gè)就可以判斷被選擇
//一是右下角在選擇區(qū)域內(nèi)
let require1 = endPositionH > topValue && endPositionW > leftValue && endPositionH < topValue + heightValue && endPositionW < leftValue + widthValue
//二是左上角在選擇區(qū)域內(nèi)
let require2 = offsetTop > topValue && offsetLeft > leftValue && offsetTop < topValue + heightValue && offsetLeft < leftValue + widthValue
//三是右上角在選擇區(qū)域內(nèi)
let require3 = offsetTop > topValue && offsetLeft + childrenWidth > leftValue && offsetTop < topValue + heightValue && offsetLeft + childrenWidth< leftValue + widthValue
//四是左下角在選擇區(qū)域內(nèi)
let require4 = offsetTop + childrenHeight > topValue && offsetLeft > leftValue && offsetTop + childrenHeight < topValue + heightValue && offsetLeft < leftValue + widthValue
//五選擇區(qū)域在元素體內(nèi)
let require5 = offsetTop < topValue && offsetLeft < leftValue && offsetTop + childrenHeight > topValue + heightValue && offsetLeft + childrenWidth > leftValue + widthValue
if(require1 || require2 || require3 || require4 || require5){
children[i].classList.add('active')
}else{
children[i].classList.remove('active')
}
}
}
})
ele.addEventListener('mouseup', function(e) {
isMouseDown = false
if(areaSelect && areaSelect.childNodes && ele.contains(areaSelect)){
ele.removeChild(areaSelect)
}
areaSelect = null
})
}
Vue.directive('selectable',{
inserted:listener,
updated:listener
})
}把這部分功能提成一個(gè)組件,然后使用watch監(jiān)聽(tīng)路由變化,再根據(jù)你想用的每個(gè)路由對(duì)應(yīng)的樣式設(shè)置組件樣式
不要設(shè)置高度。。。。
是req.session吧
你可以使用v-router來(lái)實(shí)現(xiàn);
或者判斷url來(lái)顯示或隱藏layout
相關(guān)聯(lián)的窗口指的是除了本頁(yè)面sessionstorage所作用的其他頁(yè)面,如a標(biāo)簽跳轉(zhuǎn)過(guò)去的同源頁(yè)面
嗅探?是指第一次用options第二次用post這樣的吧。瀏覽器這邊他是自動(dòng)的。如果服務(wù)器方面不收options的請(qǐng)求的話,需要他們針對(duì)這一個(gè)請(qǐng)求返回成功
哪一步是把key(h,e,l...這些字母)放進(jìn)obj里面的
是不是在 if(obj[str1[i]]) 這步里面判斷假如沒(méi)有就放進(jìn)去
兩個(gè)問(wèn)題可以一起回答:
if(obj[str1[i]]){ //如果 obj 里已經(jīng)記錄了這個(gè)字符,這個(gè)字符的計(jì)數(shù)+1
obj[str1[i]]++;
}
else{ //如果 obj 里沒(méi)有這個(gè)字符,那么給 obj 添加這個(gè)字符屬性,這個(gè)字符屬性的計(jì)數(shù)=1
obj[str1[i]]=1;
}因?yàn)樵诤竺鎛ext來(lái)返回錯(cuò)誤,所以當(dāng)請(qǐng)求沒(méi)獲取到時(shí),直接就被攔截了而不會(huì)再去執(zhí)行g(shù)et的路由。。
css換成html http請(qǐng)求 方向的優(yōu)化并沒(méi)有多大的優(yōu)化
可能你寫(xiě)html的文件比css少一點(diǎn) 速度有一些優(yōu)化
缺點(diǎn) / 如果重新加載 會(huì)重新加載所有的文件
優(yōu)點(diǎn) 可能不會(huì)給本地留下一定的緩存剛開(kāi)始沒(méi)看明白,以為講的是業(yè)務(wù)組件的事情。去搜了文章看才明白怎么回事。
文章來(lái)自知乎,題主以后類(lèi)似問(wèn)題可以在題目中注明
https://zhuanlan.zhihu.com/p/...
這篇文章講的是組件庫(kù)的設(shè)計(jì),全文有一個(gè)很明確的觀點(diǎn),即組件庫(kù)應(yīng)該給使用者足夠高的自由度,以避免組件與外部的耦合,提高組件的靈活性。紅圈這里的回調(diào)并不是指一般意義上的請(qǐng)求或者事件的回調(diào)函數(shù),而是指組件渲染的回調(diào)函數(shù),通常組件提供這類(lèi)回調(diào)時(shí)為了讓使用者聲明組件具體的渲染方式,以及數(shù)據(jù)的處理邏輯。
有一個(gè)很好的例子是antd的Table組件,該組件提供了一個(gè)展開(kāi)單行表格的功能。這里展開(kāi)的內(nèi)容就是通過(guò)回調(diào)函數(shù)來(lái)聲明的。回調(diào)函數(shù)提供每一行的數(shù)據(jù)(即紅圈處整個(gè)對(duì)象),由使用者負(fù)責(zé)處理數(shù)據(jù),并返回一個(gè)DOM結(jié)構(gòu)。組件在實(shí)際渲染時(shí),會(huì)循環(huán)調(diào)用這個(gè)回調(diào)函數(shù),將返回的DOM結(jié)構(gòu)作為展開(kāi)行的實(shí)際內(nèi)容渲染。
如此一來(lái),antd并不關(guān)心你傳入數(shù)據(jù)的結(jié)構(gòu)或者屬性名,因此實(shí)現(xiàn)了和后端,也就是數(shù)據(jù)源的解耦
import { Table } from 'antd';
const columns = [
{ title: 'Name', dataIndex: 'name', key: 'name' },
{ title: 'Age', dataIndex: 'age', key: 'age' },
{ title: 'Address', dataIndex: 'address', key: 'address' },
{ title: 'Action', dataIndex: '', key: 'x', render: () => <a href="#">Delete</a> },
];
const data = [
{ key: 1, name: 'John Brown', age: 32, address: 'New York No. 1 Lake Park', description: 'My name is John Brown, I am 32 years old, living in New York No. 1 Lake Park.' },
{ key: 2, name: 'Jim Green', age: 42, address: 'London No. 1 Lake Park', description: 'My name is Jim Green, I am 42 years old, living in London No. 1 Lake Park.' },
{ key: 3, name: 'Joe Black', age: 32, address: 'Sidney No. 1 Lake Park', description: 'My name is Joe Black, I am 32 years old, living in Sidney No. 1 Lake Park.' },
];
ReactDOM.render(
<Table
columns={columns}
expandedRowRender={record => <p style={{ margin: 0 }}>{record.description}</p>}
dataSource={data}
/>
, mountNode);
public\js\admin.js 加入:
$('.sidebar-menu li:not(.treeview) > a').on('click', function(){
var $parent = $(this).parent().addClass('active');
$parent.siblings('.treeview.active').find('> a').trigger('click');
$parent.siblings().removeClass('active').find('li').removeClass('active');
});
$(window).on('load', function(){
$('.sidebar-menu a').each(function(){
// console.log(this);
var cur = window.location.href;
var url = this.href;
// console.log(cur.match(url));
if(cur.match(url)){
$(this).parent().addClass('active')
.closest('.treeview-menu').addClass('.menu-open')
.closest('.treeview').addClass('active');
}
});
});logLevel 設(shè)置為ALL,看下日志, 同時(shí)看下當(dāng)前類(lèi)是否被正常加載
ul {
overflow:hidden;
}
li {
float: left;
padding-bottom: 9999px;
margin-bottom: -9999px;
}
php就用array_diff就可以
a少的:
array_diff($b, $a);
反過(guò)來(lái),就是a多的:
array_diff($a, $b);
返回一個(gè)數(shù)組.
代碼都沒(méi)嗎.........
因?yàn)槠渌麢C(jī)器訪問(wèn)localhost 相當(dāng)于訪問(wèn)它自己,如果你需要讓PC2 訪問(wèn)PC1 的服務(wù),請(qǐng)直接使用ip地址;
TIPS:在計(jì)算機(jī)網(wǎng)絡(luò)中,localhost(意為“本地主機(jī)”,指“這臺(tái)計(jì)算機(jī)”)是給回路網(wǎng)絡(luò)接口(loopback)的一個(gè)標(biāo)準(zhǔn)主機(jī)名,相對(duì)應(yīng)的IP地址為127.0.0.1(IPv4)和[::1](IPv6)。
北大青鳥(niǎo)APTECH成立于1999年。依托北京大學(xué)優(yōu)質(zhì)雄厚的教育資源和背景,秉承“教育改變生活”的發(fā)展理念,致力于培養(yǎng)中國(guó)IT技能型緊缺人才,是大數(shù)據(jù)專(zhuān)業(yè)的國(guó)家
達(dá)內(nèi)教育集團(tuán)成立于2002年,是一家由留學(xué)海歸創(chuàng)辦的高端職業(yè)教育培訓(xùn)機(jī)構(gòu),是中國(guó)一站式人才培養(yǎng)平臺(tái)、一站式人才輸送平臺(tái)。2014年4月3日在美國(guó)成功上市,融資1
北大課工場(chǎng)是北京大學(xué)校辦產(chǎn)業(yè)為響應(yīng)國(guó)家深化產(chǎn)教融合/校企合作的政策,積極推進(jìn)“中國(guó)制造2025”,實(shí)現(xiàn)中華民族偉大復(fù)興的升級(jí)產(chǎn)業(yè)鏈。利用北京大學(xué)優(yōu)質(zhì)教育資源及背
博為峰,中國(guó)職業(yè)人才培訓(xùn)領(lǐng)域的先行者
曾工作于聯(lián)想擔(dān)任系統(tǒng)開(kāi)發(fā)工程師,曾在博彥科技股份有限公司擔(dān)任項(xiàng)目經(jīng)理從事移動(dòng)互聯(lián)網(wǎng)管理及研發(fā)工作,曾創(chuàng)辦藍(lán)懿科技有限責(zé)任公司從事總經(jīng)理職務(wù)負(fù)責(zé)iOS教學(xué)及管理工作。
浪潮集團(tuán)項(xiàng)目經(jīng)理。精通Java與.NET 技術(shù), 熟練的跨平臺(tái)面向?qū)ο箝_(kāi)發(fā)經(jīng)驗(yàn),技術(shù)功底深厚。 授課風(fēng)格 授課風(fēng)格清新自然、條理清晰、主次分明、重點(diǎn)難點(diǎn)突出、引人入勝。
精通HTML5和CSS3;Javascript及主流js庫(kù),具有快速界面開(kāi)發(fā)的能力,對(duì)瀏覽器兼容性、前端性能優(yōu)化等有深入理解。精通網(wǎng)頁(yè)制作和網(wǎng)頁(yè)游戲開(kāi)發(fā)。
具有10 年的Java 企業(yè)應(yīng)用開(kāi)發(fā)經(jīng)驗(yàn)。曾經(jīng)歷任德國(guó)Software AG 技術(shù)顧問(wèn),美國(guó)Dachieve 系統(tǒng)架構(gòu)師,美國(guó)AngelEngineers Inc. 系統(tǒng)架構(gòu)師。