web前端之框架面試筆記

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é)和進階中的小伙伴〕瑁”

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末严卖,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子布轿,更是在濱河造成了極大的恐慌哮笆,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,482評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件汰扭,死亡現(xiàn)場離奇詭異稠肘,居然都是意外死亡,警方通過查閱死者的電腦和手機萝毛,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,377評論 2 382
  • 文/潘曉璐 我一進店門项阴,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人笆包,你說我怎么就攤上這事环揽。” “怎么了庵佣?”我有些...
    開封第一講書人閱讀 152,762評論 0 342
  • 文/不壞的土叔 我叫張陵歉胶,是天一觀的道長。 經(jīng)常有香客問我巴粪,道長通今,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,273評論 1 279
  • 正文 為了忘掉前任验毡,我火速辦了婚禮衡创,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘晶通。我一直安慰自己璃氢,他們只是感情好,可當我...
    茶點故事閱讀 64,289評論 5 373
  • 文/花漫 我一把揭開白布狮辽。 她就那樣靜靜地躺著一也,像睡著了一般。 火紅的嫁衣襯著肌膚如雪喉脖。 梳的紋絲不亂的頭發(fā)上椰苟,一...
    開封第一講書人閱讀 49,046評論 1 285
  • 那天,我揣著相機與錄音树叽,去河邊找鬼舆蝴。 笑死,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的洁仗。 我是一名探鬼主播层皱,決...
    沈念sama閱讀 38,351評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼赠潦!你這毒婦竟也來了叫胖?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,988評論 0 259
  • 序言:老撾萬榮一對情侶失蹤她奥,失蹤者是張志新(化名)和其女友劉穎瓮增,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體哩俭,經(jīng)...
    沈念sama閱讀 43,476評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡绷跑,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,948評論 2 324
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了携茂。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片你踩。...
    茶點故事閱讀 38,064評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡诅岩,死狀恐怖讳苦,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情吩谦,我是刑警寧澤鸳谜,帶...
    沈念sama閱讀 33,712評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站式廷,受9級特大地震影響咐扭,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜滑废,卻給世界環(huán)境...
    茶點故事閱讀 39,261評論 3 307
  • 文/蒙蒙 一蝗肪、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧蠕趁,春花似錦薛闪、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,264評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至腊状,卻和暖如春诱咏,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背缴挖。 一陣腳步聲響...
    開封第一講書人閱讀 31,486評論 1 262
  • 我被黑心中介騙來泰國打工袋狞, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 45,511評論 2 354
  • 正文 我出身青樓苟鸯,卻偏偏與公主長得像法焰,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子倔毙,可洞房花燭夜當晚...
    茶點故事閱讀 42,802評論 2 345

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

  • 一:什么是閉包埃仪?閉包的用處? (1)閉包就是能夠讀取其他函數(shù)內(nèi)部變量的函數(shù)陕赃。在本質(zhì)上卵蛉,閉包就 是將函數(shù)內(nèi)部和函數(shù)外...
    xuguibin閱讀 9,523評論 1 52
  • 當父母的智商與情商,完全跟不上你的腳步么库,落后一大截的時候傻丝,該怎么辦?
    向陽Sx閱讀 262評論 0 0
  • 曾經(jīng)研究心理學(xué)诉儒,讀懂了“快樂”兩個字葡缰。就是說我們每天都會面對很多事,比如說工作的事忱反,孩子的事泛释,父母的事,朋...
    作家晨雪閱讀 314評論 0 0