我解釋一下上面關(guān)于computed的評(píng)論吧
Vue是響應(yīng)式的,這就意味著一個(gè)好的設(shè)計(jì)模式是只保存源數(shù)據(jù),進(jìn)一步的變換交給框架。換言之,就是不增加沒(méi)有必要的狀態(tài)。所以我的建議是把datafilter放到computed里面。
{
data() {
return {
datalist: [],
// filter就應(yīng)該存filter,如果按原來(lái)的邏輯,應(yīng)該叫filteredDataList
// 其實(shí)我更喜歡selectedDate,更加明確
// datafilter: null,
selectedDate: null,
}
},
computed: {
filteredDatalist() {
if (this.selectedDate) {
return this.datalist.filter(({ recoverTime }) => recoverTime === this.selectedDate);
}
else {
return this.datalist;
}
}
},
methods: {
getData() {
this.$get('接口地址', 請(qǐng)求參數(shù))
.then(response => {
this.datalist = response
})
.catch(error => {
});
},
clickDay(date) {
var a = date.split('/');
// 用樓上的方式更優(yōu)雅一些
this.selectedDate = a[0] + '-' + (a[1] < 10 ? '0' : '') + a[1] + '-' + (a[2] < 10 ? '0' : '') + a[2];
},
},
}
好處都有啥?誰(shuí)說(shuō)對(duì)了就給他
datalist生命周期的限制。假如以后想要加上datalist實(shí)時(shí)更新的功能,只需要定時(shí)getData就行了(或者用websocket,不論是啥),不需要用戶觸發(fā)clickDay就能自動(dòng)刷新;computed屬性的緩存,如果用戶clickDay兩次都相同,只會(huì)計(jì)算一次。其實(shí)這種思想已經(jīng)很函數(shù)式了,相當(dāng)像Rx。但是Vue的學(xué)習(xí)成本比Rx低得多,這么簡(jiǎn)單就能用上函數(shù)式,何樂(lè)不為?
兼容性好的話
var obj = {
"1": [111, 222],
"2": [333],
"3": [444, 555]
};
var arr = [];
for(var i in obj){
arr.push(...obj[i]);
}
console.log(arr);
或者
var obj = {
"1": [111, 222],
"2": [333],
"3": [444, 555]
};
var arr = [];
for(var i in obj){
for(var j in obj[i]){
arr.push(obj[i][j]);
}
}
console.log(arr);
var arr = [];
for(var i in obj){
arr=arr.concat(obj[i]);
}
console.log(arr);rxjs很適合這樣的場(chǎng)景,了解一下
圖片沒(méi)加載出來(lái)了,請(qǐng)重新上傳
on這些方法都是繼承自emitter,所以試試
function callback(data) {
console.log(bbb)
}
sensorConnect.on('data', callback)
sensorConnect.removeListener('data', callback)
我查的是node 7.X, 可以瞧瞧你node版本的文檔
這是之前寫(xiě)的返回頂部的組件,就是在 componentDidMount 里監(jiān)聽(tīng) window scroll 事件。
https://github.com/BaoXuebin/xdbin-react-app/blob/master/src/app/components/BackTop.jsx
這里分享一個(gè)之前遇到的坑吧。因?yàn)榉祷仨敳窟@個(gè)組件基本每個(gè)頁(yè)面都會(huì)用到,而一個(gè)頁(yè)面里對(duì) window scroll 事件的處理有可能不止一個(gè)。如果每個(gè)組件里都寫(xiě)如下代碼:
componentDidMount() {
window.onscroll = () => {
// ...
};
}
則肯定會(huì)覆蓋原有的 window.onscroll 方法。所以正確的處理應(yīng)該是延續(xù) onscroll 事件的冒泡執(zhí)行。
componentDidMount() {
window.onscroll = () => {
if (window.onscroll) {
window.onscroll();
}
// ...
};
}1.這就是函數(shù)式組件,沒(méi)有生命周期的純組件,繼承components的組件有生命周期和內(nèi)部的state
2.components和containers都是react的組件,只不過(guò)這里的components一般指純組件,就是沒(méi)有內(nèi)部state。頁(yè)面展示的數(shù)據(jù)都是來(lái)源于父組件,也就是containers組件,containers會(huì)處理復(fù)雜的邏輯和數(shù)據(jù)處理,通過(guò)props把數(shù)據(jù)傳遞給子組件。一個(gè)簡(jiǎn)單的例子。一個(gè)展示todolist的組件的containers負(fù)責(zé)通過(guò)ajax拿到todolist。傳遞給純展示的components組件
1.放在created里面
或者
2.在beforeRouteEnter里commit數(shù)據(jù)給state
創(chuàng)建的時(shí)候存?zhèn)€cookie,每次創(chuàng)建之前判斷一下,是不是我想得太簡(jiǎn)單了……
字符串轉(zhuǎn)成number?
你想學(xué)習(xí)這兩種模式,你得知道這兩種模式是什么,這兩年最火的莫過(guò)于vue.js了,在mvvm中,沒(méi)有dom這一概念,所有的交互都是通過(guò)控制來(lái)實(shí)現(xiàn)的。想學(xué)習(xí)這個(gè),首先得摸熟原生js,其次你得擺脫jquery的束縛,因?yàn)関ue.js是完全不用jquery的。
如果非要說(shuō)其它語(yǔ)言的話,你得看看es6,別的就不用了,當(dāng)然前提是html5,css3,原生js都得會(huì)的情況下。
不用看什么書(shū)籍,你去把官方文檔打一遍,然后看看慕課網(wǎng)上的教程。構(gòu)思的話,你從數(shù)據(jù)入手,不要想著操作dom,也就是操作html里面的內(nèi)容,雙向綁定的東西,html跟著數(shù)據(jù)走的。
模板視圖控制器是相輔相成的,一個(gè)界面的組成肯定要有視圖,然后你用控制器控制,然后制成模板然后調(diào)用,你說(shuō)的mvc走的就是這個(gè)流程。
這個(gè)問(wèn)題就是函數(shù)回調(diào)的問(wèn)題。你為什么要搞路由嵌套呢?這樣兩次請(qǐng)求的req和res都是不同的,加上javascript回調(diào)函數(shù)的調(diào)用機(jī)制,sql變量也會(huì)出現(xiàn)交疊的情況。
代碼全一點(diǎn)兒
你這個(gè)應(yīng)該扔豬八戒 或者其他外包網(wǎng)站實(shí)在點(diǎn)
你安裝的依賴一直都在 node_modules 里面, package.json 只是記錄你項(xiàng)目有哪些依賴. 如果依賴是生產(chǎn)環(huán)境需要,本地開(kāi)發(fā)也需要, 那你最好是記錄在 dependencies 里, 確保用戶利益為主. 不管你記錄在 dependencies 還是 devDependencies , 在執(zhí)行 npm install 的時(shí)候這些依賴都會(huì)被下載到 node_modules 里, 在使用過(guò)程中是沒(méi)有任何區(qū)別的.
添加百度統(tǒng)計(jì)
在 plugins 目錄下創(chuàng)建 plugins/baiduGa.js 文件
plugins/baiduGa.js
export default ({app: {router}, store}) => {
/* 每次路由變更時(shí)進(jìn)行pv統(tǒng)計(jì) */
router.afterEach((to, from) => {
/* 告訴增加一個(gè)PV */
try {
window._hmt = window._hmt || []
window._hmt.push(['_trackPageview', to.fullPath])
} catch (e) {
}
})
}
然后,我們需要告訴 Nuxt.js 將該插件導(dǎo)入主應(yīng)用中,在nuxt.config.js配置如下
nuxt.config.js
head: {
script: [
{src: 'https://#/hm.js?****'}, /*引入百度統(tǒng)計(jì)的js*/
]
},
plugins: [
'@/plugins/ga.js', /*百度統(tǒng)計(jì)*/
]
添加google統(tǒng)計(jì) 官方
https://zh.nuxtjs.org/faq/goo...
from https://github.com/WangShuXia...
80端口不行但是8080端口可以,你要檢查端口沖突或者檢查配置文件(nginx.conf和其他的conf文件)。
另外,你的servername在哪里?
兄弟,你定義了2個(gè)bigFish module。
angular.module函數(shù)為2個(gè)參數(shù)時(shí)就是創(chuàng)建一個(gè)模塊了。
給你一個(gè)輪子:Element-angular。
他們的做法是:
upload(path: string, file: File): Observable<any> {
const req: HttpRequest<{}> = new HttpRequest('POST', path, file, {
headers: this.headers,
reportProgress: true,
withCredentials: this.withCredentials,
})
return this.http.request(req)
}
直接傳文件,并未做過(guò)多的處理。
北大青鳥(niǎo)APTECH成立于1999年。依托北京大學(xué)優(yōu)質(zhì)雄厚的教育資源和背景,秉承“教育改變生活”的發(fā)展理念,致力于培養(yǎng)中國(guó)IT技能型緊缺人才,是大數(shù)據(jù)專業(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)師。