AngularJS是什么?
AngularJs(簡稱ng)是一個用于設(shè)計動態(tài)web應(yīng)用的結(jié)構(gòu)框架誉尖。首先罪既,它是一個框架,不是類庫铡恕,是像EXT一樣提供一整套方案用于設(shè)計web應(yīng)用琢感。它不僅僅是一個Javascript框架,因為它的核心其實是對HTML標簽的增強探熔。何為HTML標簽增強驹针?其實就是使你能夠用標簽完成一部分頁面邏輯,具體方式就是通過自定義標簽诀艰、自定義屬性等柬甥,這些HTML原生沒有的標簽/屬性在ng中有一個名字:指令(directive)。后面會詳細介紹其垄。那么苛蒲,什么又是動態(tài)web應(yīng)用呢?與傳統(tǒng)web系統(tǒng)相區(qū)別绿满,web應(yīng)用能為用戶提供豐富的操作臂外,能夠隨用戶操作不斷更新視圖而不進行url跳轉(zhuǎn)。ng官方也聲明它更適用于開發(fā)CRUD應(yīng)用喇颁,即數(shù)據(jù)操作比較多的應(yīng)用漏健,而非是游戲或圖像處理類應(yīng)用。為了實現(xiàn)這些橘霎,ng引入了一些非常棒的特性漾肮,包括模板機制、數(shù)據(jù)綁定茎毁、模塊克懊、指令、依賴注入七蜘、路由谭溉。通過數(shù)據(jù)與模板的綁定,能夠讓我們擺脫繁瑣的DOM操作橡卤,而將注意力集中在業(yè)務(wù)邏輯上扮念。
另外一個疑問,ng是MVC框架嗎碧库?還是MVVM框架柜与?官網(wǎng)有提到ng的設(shè)計采用了MVC的基本思想巧勤,而又不完全是MVC,因為在書寫代碼時我們確實是在用ng-controller這個指令(起碼從名字上看弄匕,是MVC吧)颅悉,但這個controller處理的業(yè)務(wù)基本上都是與view進行交互,這么看來又很接近MVVM迁匠。讓我們把目光移到官網(wǎng)那個非醒目的title上:“AngularJS — Superheroic Javascript MVW Framework”剩瓶。
AngularJS簡單介紹
AngularJS 重新定義了前端應(yīng)用的開發(fā)方式。面對HTML和JavaScript之間的界線城丧,它非但不畏縮不前延曙,反而正面出擊,提出了有效的解決方案亡哄。很多前端應(yīng)用的開發(fā)框架枝缔,比如Backbone、EmberJS等蚊惯,都要求開發(fā)者繼承此框架特有的一些JavaScript對象愿卸。這種方式有其長處,但它不必要地污染了開發(fā)者自己代碼的對象空間拣挪,還要求開發(fā)者去了解內(nèi)存里那些抽象對象擦酌。盡管如此我們還是接受了這種方式俱诸,因為網(wǎng)絡(luò)最初的設(shè)計無法提供 我們今天所需的交互性菠劝,于是我們需要框架,來幫我們填補JavaScript和HTML之間的鴻溝睁搭。而且有了它赶诊,你不用再“直接”操控DOM,只要給你的DOM注上metadata(即AngularJS里的directive們)园骆,然后讓AngularJS來幫你操縱DOM舔痪。同時,AngularJS不依賴(也不妨礙)任何其他的框架锌唾。你甚至可以基于其它的框架來開發(fā)AngularJS應(yīng)用锄码。
我們什么時候該用AngularJS呢?
AngularJS是一個 MV* 框架晌涕,最適于開發(fā)客戶端的單頁面應(yīng)用滋捶。它不是個功能庫,而是用來開發(fā)動態(tài)網(wǎng)頁的框架余黎。它專注于擴展HTML的功能重窟,提供動態(tài)數(shù)據(jù)綁定(data binding),而且它能跟其它框架(如jQuery)合作融洽惧财。
如果你要開發(fā)的是單頁應(yīng)用巡扇,AngularJS就是你的上上之選扭仁。Gmail、Google Docs厅翔、Twitter和Facebook這樣的應(yīng)用乖坠,都很能發(fā)揮AngularJS的長處。但是像游戲開發(fā)之類對DOM進行大量操縱知给、又或者單純需要 極高運行速度的應(yīng)用瓤帚,就不是AngularJS的用武之地了。
AugularJS特性
AngularJS是一個新出現(xiàn)的強大客戶端技術(shù)涩赢,提供給大家的一種開發(fā)強大應(yīng)用的方式戈次。在這里我們淺談一下angular比較簡單的幾個特性,后邊咱們再具體談?wù)揳ngular的其他特性筒扒。
首先我們先來了解一下angular的五個小特性怯邪,具體了解一下:
特性一:雙向的數(shù)據(jù)綁定
數(shù)據(jù)綁定可能是AngularJS最酷最實用的特性。它能夠幫助你避免書寫大量的初始代碼從而節(jié)約開發(fā)時間花墩。一個典型的web應(yīng)用可能包含了80%的代碼用來處理悬秉,查詢和監(jiān)聽DOM。數(shù)據(jù)綁定是的代碼更少冰蘑,你可以專注于你的應(yīng)用和泌。
我們想象一下Model是你的應(yīng)用中的簡單事實。你的Model是你用來讀取或者更新的部分祠肥。數(shù)據(jù)綁定指令提供了你的Model投射到view的方法武氓。這些投射可以無縫的,毫不影響的應(yīng)用到web應(yīng)用中仇箱。
傳統(tǒng)來說县恕,當model變化了。 開發(fā)人員需要手動處理DOM元素并且將屬性反映到這些變化中剂桥。這個一個雙向的過程忠烛。一方面,model變化驅(qū)動了DOM中元素變化权逗,另一方面美尸,DOM元素的變化也會影響到Model。這個在用戶互動中更加復(fù)雜斟薇,因為開發(fā)人員需要處理和解析
這些互動师坎,然后融合到一個model中,并且更新View奔垦。這是一個手動的復(fù)雜過程屹耐,當一個應(yīng)用非常龐大的時候,將會是一件非常費勁的事情。
這里肯定有更好的解決方案惶岭!那就是AngularJS的雙向數(shù)據(jù)綁定寿弱,能夠同步DOM和Model等等。
特性二:模板
在AngularJS中按灶,一個模板就是一個HTML文件症革。但是HTML的內(nèi)容擴展了,包含了很多幫助你映射model到view的內(nèi)容鸯旁。
HTML模板將會被瀏覽器解析到DOM中噪矛。DOM然后成為AngularJS編譯器的輸入。AngularJS將會遍歷DOM模板來生成一些指導(dǎo)铺罢,即艇挨,directive(指令)。所有的指令都負責(zé)針對view來設(shè)置數(shù)據(jù)綁定韭赘。
我們要理解AuguarJS并不把模板當做String來操作缩滨。輸入AngularJS的是DOM而非string。數(shù)據(jù)綁定是DOM變化泉瞻,不是字符串的連接或者innerHTML變化脉漏。使用DOM作為輸入,而不是字符串袖牙,是AngularJS區(qū)別于其它的框架的最大原因侧巨。使用DOM允許你擴展指令詞匯并且可以創(chuàng)建你自己的指令,甚至開發(fā)可重用的組件鞭达。
最大的好處是為設(shè)計師和開發(fā)者創(chuàng)建了一個緊密的工作流司忱。設(shè)計師可以像往常一樣開發(fā)標簽,然后開發(fā)者拿過來添加上功能碉怔,通過數(shù)據(jù)綁定將會使得這個過程非常簡單烘贴。
特性三:MVC
針對客戶端應(yīng)用開發(fā)AngularJS吸收了傳統(tǒng)的MVC基本原則禁添。MVC或者Model-View-Controll設(shè)計模式針對不同的人可能意味不同的東西撮胧。AngularJS并不執(zhí)行傳統(tǒng)意義上的MVC,更接近于MVVM(Moodel-View-ViewModel)老翘。
Model
model是應(yīng)用中的簡單數(shù)據(jù)芹啥。一般是簡單的javascript對象。這里沒有必要繼承框架的classes铺峭,使用proxy對象封裝或者使用特別的setter/getter方法來訪問墓怀。事實上我們處理vanilla javascript的方法就是一個非常好的特性,這種方法使得我們更少使用應(yīng)用的原型卫键。
ViewModel
viewmodel是一個用來提供特別數(shù)據(jù)和方法從而維護指定view的對象傀履。
viewmodel是$scope的對象,只存在于AnguarJS的應(yīng)用中莉炉。$scope只是一個簡單的js對象钓账,這個對象使用簡單的API來偵測和廣播狀態(tài)變化碴犬。
Controller
controller負責(zé)設(shè)置初始狀態(tài)和參數(shù)化$scope方法用以控制行為。需要指出的controller并不保存狀態(tài)也不和遠程服務(wù)互動梆暮。
View
view是AngularJS解析后渲染和綁定后生成的HTML 服协。這個部分幫助你創(chuàng)建web應(yīng)用的架構(gòu)。$scope擁有一個針對數(shù)據(jù)的參考啦粹,controller定義行為偿荷,view處理布局和互動。
特性四:服務(wù)和依賴注入
AngularJS服務(wù)其作用就是對外提供某個特定的功能唠椭。
AngularJS擁有內(nèi)建的依賴注入(DI)子系統(tǒng)跳纳,可以幫助開發(fā)人員更容易的開發(fā),理解和測試應(yīng)用贪嫂。
DI允許你請求你的依賴棒旗,而不是自己找尋它們。比如撩荣,我們需要一個東西铣揉,DI負責(zé)找創(chuàng)建并且提供給我們。
為了而得到核心的AngularJS服務(wù)餐曹,只需要添加一個簡單服務(wù)作為參數(shù)逛拱,AngularJS會偵測并且提供給你:
你也可以定義自己的服務(wù)并且讓它們注入:
特性五:指令(Directives)
指令是我個人最喜歡的特性。你是不是也希望瀏覽器可以做點兒有意思的事情台猴?那么AngularJS可以做到朽合。
指令可以用來創(chuàng)建自定義的標簽。它們可以用來裝飾元素或者操作DOM屬性饱狂〔懿剑可以作為標簽、屬性休讳、注釋和類名使用讲婚。
這里是一個例子,它監(jiān)聽一個事件并且針對的更新它的$scope 俊柔,如下:
然后筹麸,你可以使用這個自定義的directive來使用:
<my-component ng-model="message"></my-component>
使用一系列的組件來創(chuàng)建你自己的應(yīng)用將會讓你更方便的添加,刪除和更新功能雏婶。
Angular1 與 Angular2的區(qū)別
Angular2不是從Angular1升級過來的物赶,Angular2是重寫的,所以他們之間的差別比較大留晚,不是你用過1就能直接上手2的酵紫,計劃可以認為是一個新的框架;
Angular2使用了javascript的超集‘Typescript’,所以angular1和angular2從設(shè)定之初就是不一樣的奖地;
Angular1.x在設(shè)計之初主要是針對pc端的状蜗,對移動端支持較少(當然也有其他一些衍生框架如ionic),而Angular2是設(shè)計包含移動端的鹉动;
Angular 1的核心概念是$scope轧坎,但是angular2中沒有$scope,angular2使用zone.js來記錄監(jiān)測變化泽示;
Angular 1 中的控制器在angular2中不再使用缸血,也可以說控制器在angular2中被‘Component’組件所替代:
Angular 2中, 指令的結(jié)構(gòu)、用法作了一些調(diào)整械筛,比如1中的ng-repeat被*ngFor替代
Angular 2中, 自帶原始指令在使用的時候要加上哈希(#)前綴
<div *ngFor="#technicalDiary of technicalDiries">
雙向數(shù)據(jù)綁定: [(ngModel)]的寫法替換了ng-model
Angular 2主要的性能優(yōu)化改進是使用了分層依賴注入系統(tǒng)众弓。 Angular 2實現(xiàn)了基于單向樹的變化檢測狈醉,這再次提高了性能;這些優(yōu)化改進是的angular2的速度比angular1的速度提高很多;
Angular 2的大小是20kb左右盼产,相對于angular1體積減少很多攀涵,在移動端的應(yīng)用中牡属,流量方便更占優(yōu)勢渊涝;
支持影子 DOM;
支持 Android 和 iOS 的原生移動渲染抛计;
支持服務(wù)端渲染
總結(jié):
很多人覺得從angular1轉(zhuǎn)向angular2的時候?qū)W習(xí)曲線陡峭哄孤,所以在進軍angular2的時候還是先做點預(yù)習(xí)功課比較好,也是因為改動較大吹截,對angular2的設(shè)計思想瘦陈、原生組件寫法和工作原理有一定的了解,學(xué)習(xí)使用的過程中也更好跨階波俄。
盡管angular2還在應(yīng)用測試階段晨逝,但是新版本相對于angular1有了長足的優(yōu)化改進,相信它會越來越多的被應(yīng)用到各個應(yīng)用開發(fā)中懦铺,并且angular2只會load應(yīng)用所需的組件(components)捉貌,這也是個很好的改進,一些統(tǒng)計網(wǎng)站上的數(shù)據(jù)顯示angular的速度比angular1快五倍阀趴,不得不說這次angular2的改版升級是非常給力的昏翰;
Vue
說一說對 vue 的理解
是一個輕量的 MVVM 框架苍匆。寫程序的時候更少的去關(guān)注 DOM 的改動刘急,而是將重點放在數(shù)據(jù)之上。雙向綁定完成之后浸踩,數(shù)據(jù)的改變會驅(qū)動頁面顯示的變化叔汁。當一個站點或者網(wǎng)站擁有極大數(shù)據(jù)量,且點擊一個區(qū)塊會發(fā)生很多頁面數(shù)據(jù)改變的時候。這個網(wǎng)站就可以使用 vue 框架据块。并且 vue 的組件化的寫法極為友好码邻,也是分為 template 、script 另假、style 將 HTML像屋、JS、CSS 放置到一個 vue文件之中边篮。并且有 vuex 和 vue-router 等機制己莺。
請談?wù)刅ue中的MVVM模式
MVVM全稱是Model-View-ViewModel
Vue是以數(shù)據(jù)為驅(qū)動的,Vue自身將DOM和數(shù)據(jù)進行綁定戈轿,一旦創(chuàng)建綁定凌受,DOM和數(shù)據(jù)將保持同步,每當數(shù)據(jù)發(fā)生變化思杯,DOM會跟著變化胜蛉。 ViewModel是Vue的核心,它是Vue的一個實例色乾。Vue實例時作用域某個HTML元素上的這個HTML元素可以是body誊册,也可以是某個id所指代的元素。
DOMListeners和DataBindings是實現(xiàn)雙向綁定的關(guān)鍵暖璧。DOMListeners監(jiān)聽頁面所有View層DOM元素的變化解虱,當發(fā)生變化,Model層的數(shù)據(jù)隨之變化漆撞;DataBindings監(jiān)聽Model層的數(shù)據(jù)殴泰,當數(shù)據(jù)發(fā)生變化,View層的DOM元素隨之變化浮驳。
v-show和v-if指令的共同點和不同點?
v-show指令是通過修改元素的displayCSS屬性讓其顯示或者隱藏
v-if指令是直接銷毀和重建DOM達到讓元素顯示和隱藏的效果
如何讓CSS只在當前組件中起作用?
將當前組件的<style>修改為<style scoped>
vue 中父子組件之間傳值是怎樣進行的
父組件通過屬性的形式向子組件進行傳值悍汛。
子組件通過事件觸發(fā)的形式向父組件傳值
父子組件傳值時,有單向數(shù)據(jù)流的規(guī)定至会。父組件可以向子組件傳遞任何的數(shù)據(jù)离咐,但子組件不能修改父組件傳遞過來的數(shù)據(jù)。如果一定要進行修改奉件,只能通過修改復(fù)制副本的方式進行宵蛀。
vue生命周期簡記
生命周期
beforeCreate:創(chuàng)建前,new操作县貌,已綁定事件术陶,還沒有數(shù)據(jù),不能處理數(shù)據(jù)
created:創(chuàng)建煤痕,可以處理數(shù)據(jù)
beforeMounted:掛載前梧宫,準備把創(chuàng)建的掛載到el上接谨,有el才去執(zhí)行掛載
掛載前的el仍是<div id="app"></div>
有template轉(zhuǎn)化后執(zhí)行render funcion再去渲染
cli中的.vue文件中的template是通過vue-loader直接轉(zhuǎn)化直接執(zhí)行render funcion的減少耗時
mounted:掛載,掛載后$el就是渲染后的<div>123</div>塘匣,掛載前后中間執(zhí)行render funcion
beforeUpdated:更新前脓豪,數(shù)據(jù)變化
updated:更新
beforeDestroy:銷毀前,組件被銷毀忌卤,或手動銷毀
destroy:銷毀
注:
掛載前的鉤子里獲取不到el的扫夜,想對如data中的數(shù)據(jù)進行操作最早要在created里;
一般在created和mounted鉤子里寫一些頁面渲染前的操作驰徊,比如數(shù)據(jù)請求历谍;
有些傳統(tǒng)的第三方庫在使用后需要在組件銷毀時手動刪除其創(chuàng)建的對象在destroy中
<keep-alive></keep-alive>的作用是什么?
<keep-alive></keep-alive>包裹動態(tài)組件時,會緩存不活動的組件實例,主要用于保留組件狀態(tài)或避免重新渲染辣垒。
大白話: 比如有一個列表和一個詳情望侈,那么用戶就會經(jīng)常執(zhí)行打開詳情=>返回列表=>打開詳情…這樣的話列表和詳情都是一個頻率很高的頁面,那么就可以對列表組件使用<keep-alive></keep-alive>進行緩存勋桶,這樣用戶每次返回列表的時候脱衙,都能從緩存中快速渲染,而不是重新渲染
vue-cli 工程技術(shù)集合介紹
問題一:構(gòu)建的 vue-cli 工程都到了哪些技術(shù)例驹,它們的作用分別是什么捐韩?
1、vue.js:vue-cli工程的核心鹃锈,主要特點是 雙向數(shù)據(jù)綁定 和 組件系統(tǒng)荤胁。
2、vue-router:vue官方推薦使用的路由框架屎债。
3仅政、vuex:專為 Vue.js 應(yīng)用項目開發(fā)的狀態(tài)管理器,主要用于維護vue組件間共用的一些 變量 和 方法盆驹。
4圆丹、axios( 或者 fetch 、ajax ):用于發(fā)起 GET 躯喇、或 POST 等 http請求辫封,基于 Promise 設(shè)計。
5廉丽、vux等:一個專為vue設(shè)計的移動端UI組件庫倦微。
6、創(chuàng)建一個emit.js文件正压,用于vue事件機制的管理欣福。
7、webpack:模塊加載和vue-cli工程打包器蔑匣。
問題二:vue-cli 工程常用的 npm 命令有哪些劣欢?
下載 node_modules 資源包的命令:npm install
啟動 vue-cli 開發(fā)環(huán)境的 npm命令:npm run dev
vue-cli 生成 生產(chǎn)環(huán)境部署資源 的 npm命令:npm run build
用于查看 vue-cli 生產(chǎn)環(huán)境部署資源文件大小的 npm命令:npm run build --report
命令效果:
在瀏覽器上自動彈出一個 展示 vue-cli 工程打包后 app.js棕诵、manifest.js裁良、vendor.js 文件里面所包含代碼的頁面凿将。可以具此優(yōu)化 vue-cli 生產(chǎn)環(huán)境部署的靜態(tài)資源价脾,提升 頁面 的加載速度牧抵。
問題三:vue-cli 工程目錄結(jié)構(gòu)介紹
1、build 文件夾:用于存放 webpack 相關(guān)配置和腳本侨把。開發(fā)中僅 偶爾使用 到此文件夾下 webpack.base.conf.js 用于配置 less犀变、sass等css預(yù)編譯庫,或者配置一下 UI 庫秋柄。
2获枝、config 文件夾:主要存放配置文件,用于區(qū)分開發(fā)環(huán)境骇笔、線上環(huán)境的不同省店。 常用到此文件夾下 config.js 配置開發(fā)環(huán)境的 端口號、是否開啟熱加載 或者 設(shè)置生產(chǎn)環(huán)境的靜態(tài)資源相對路徑笨触、是否開啟gzip壓縮懦傍、npm run build 命令打包生成靜態(tài)資源的名稱和路徑等。
3芦劣、dist 文件夾:默認 npm run build 命令打包生成的靜態(tài)資源文件粗俱,用于生產(chǎn)部署。
4虚吟、node_modules:存放npm命令下載的開發(fā)環(huán)境和生產(chǎn)環(huán)境的依賴包寸认。
5、src: 存放項目源碼及需要引用的資源文件串慰。
6废麻、src下assets:存放項目中需要用到的資源文件,css模庐、js烛愧、images等。
7掂碱、src下componets:存放vue開發(fā)中一些公共組件:header.vue怜姿、footer.vue等。
8疼燥、src下emit:自己配置的vue集中式事件管理機制沧卢。
9、src下router:vue-router vue路由的配置文件醉者。
10但狭、src下service:自己配置的vue請求后臺接口方法披诗。
11、src下page:存在vue頁面組件的文件夾立磁。
12呈队、src下util:存放vue開發(fā)過程中一些公共的.js方法。
13唱歧、src下vuex:存放 vuex 為vue專門開發(fā)的狀態(tài)管理器宪摧。
14、src下app.vue:使用標簽渲染整個工程的.vue組件颅崩。
15几于、src下main.js:vue-cli工程的入口文件。
16沿后、index.html:設(shè)置項目的一些meta頭信息和提供
用于掛載 vue 節(jié)點沿彭。
17、package.json:用于 node_modules資源部 和 啟動尖滚、打包項目的 npm 命令管理喉刘。
問題四:config文件夾 下 index.js 的對于工程 開發(fā)環(huán)境 和 生產(chǎn)環(huán)境 的配置
build 對象下 對于 生產(chǎn)環(huán)境 的配置:
index:配置打包后入口.html文件的名稱以及文件夾名稱
assetsRoot:配置打包后生成的文件名稱和路徑
assetsPublicPath:配置 打包后 .html 引用靜態(tài)資源的路徑,一般要設(shè)置成 "./"
productionGzip:是否開發(fā) gzip 壓縮熔掺,以提升加載速度
dev 對象下 對于 開發(fā)環(huán)境 的配置:
port:設(shè)置端口號
autoOpenBrowser:啟動工程時饱搏,自動打開瀏覽器
proxyTable:vue設(shè)置的代理,用以解決 跨域 問題
問題五:請你詳細介紹一些 package.json 里面的配置
常用對象解析:
scripts:npm run xxx 命令調(diào)用node執(zhí)行的 .js 文件
dependencies:生產(chǎn)環(huán)境依賴包的名稱和版本號置逻,即這些 依賴包 都會打包進 生產(chǎn)環(huán)境的JS文件里面
devDependencies:開發(fā)環(huán)境依賴包的名稱和版本號推沸,即這些 依賴包 只用于 代碼開發(fā) 的時候,不會打包進 生產(chǎn)環(huán)境js文件 里面券坞。
說一說對 vuex 的理解
vuex 就是一個倉庫鬓催,倉庫里面放了很多對象。其中 state 就是數(shù)據(jù)源存放地恨锚,對應(yīng)于與一般 Vue 對象里面的 data宇驾。使用 vuex 可以簡單、快速的完成兄弟組件之間的傳值猴伶。不用經(jīng)過一個中間組件再傳遞一次值或者事件课舍。降低了耦合,也有很好的可維護性他挎、可讀性筝尾。
vue 使用vue-i18n做全局中英文切換
1、vue-i18n安裝npm install vue-i18n --save-dev
2办桨、在main.js文件中引入
3筹淫、新建中英文語言文件
4、創(chuàng)建一個切換語言方法(寫在App.vue可以全局控制)呢撞;
5损姜、在template中的使用:
React
Redux
react將dom解耦饰剥,不用直接操作dom,使用了狀態(tài)機制摧阅,當狀態(tài)改變時視圖就會相應(yīng)更新汰蓉。我們知道在react中,父組件可以將一些狀態(tài)傳遞給子組件逸尖,讓子組件的視圖相應(yīng)更新古沥,這時我們會發(fā)現(xiàn)瘸右,只有有關(guān)聯(lián)的組件才可以依次傳遞娇跟,那些沒有父組件與子組件關(guān)系的組件,這些組件之間的某些狀態(tài)是共享的太颤,這時就需要redux了苞俘。
redux的主要設(shè)計思想:1)web應(yīng)用是一個狀態(tài)機,視圖與狀態(tài)是一一對應(yīng)的 2)所有的狀態(tài)都保存在一個對象里
redux包含兩個步驟龄章,發(fā)起Action和產(chǎn)生新state的reducer
Action的函數(shù)可以是自己寫的一個請求后臺數(shù)據(jù)的函數(shù)吃谣,也可以使用react-actions中的createAction,與后臺無交互做裙,只是傳入更新的state
Reducer的函數(shù)接收Action傳入的state岗憋,通過對state操作返回新的state,在需要該state的組件使用該reducer更新state
redux的設(shè)計思想之一就是所有的數(shù)據(jù)都在一個對象里锚贱,那么當reducer過于繁多時仔戈,就會導(dǎo)致代碼難于維護,所以我們可以拆分成幾個小的reducer拧廊,最后將這些reducer合并成大的reducer监徘,redux提供了combineReducers函數(shù)可以將子reducer合并成一個state對象
小程序
小程序有哪幾種跳轉(zhuǎn)頁面的方式
wx.switchTab:跳轉(zhuǎn) app.json 的頁面(路由方式)
wx.navigateTo:跳轉(zhuǎn)到指定頁面,保存當前頁面吧碾。
wx.redirectTo:跳轉(zhuǎn)到指定頁面凰盔,關(guān)閉當前頁面。
wx.navigateBack:返回之前頁面,跳轉(zhuǎn)之前的頁面
Node.js
Node.js 是一個基于 Chrome V8 引擎的 JavaScript 運行環(huán)境倦春。
Node.js 使用了一個事件驅(qū)動户敬、非阻塞式 I/O 的模型,使其輕量又高效睁本。
Node.js 的包管理器 npm尿庐,是全球最大的開源庫生態(tài)系統(tǒng)。
最后:
“相信有很多想學(xué)前端的小伙伴添履,今年年初我花了一個月整理了一份最適合2018年學(xué)習(xí)的web前端干貨屁倔,從最基礎(chǔ)的HTML+CSS+JS到移動端HTML5到各種框架都有整理,送給每一位前端小伙伴暮胧,53763锐借,1707這里是小白聚集地问麸,歡迎初學(xué)和進階中的小伙伴〕瑁”