rem布局
em時(shí)父級(jí)的字體的大小耸彪,rem是根字體的大小。rem是相當(dāng)于html根元素來(lái)判斷的大小栈雳,屏幕變化的時(shí)候不是很好控制护奈,用百分比了話,可以根據(jù)屏幕的大小哥纫,占比多少霉旗,相對(duì)比較好控制。
16.MVC MVVM(優(yōu)缺點(diǎn))
MVVM是由MVC衍生出來(lái)的一種前后端分離的數(shù)據(jù)開(kāi)發(fā)模式蛀骇,MVC是后臺(tái)的前后端分離的數(shù)據(jù)開(kāi)發(fā)模式厌秒,其中的M是指model,model呢是指模型擅憔,模型呢也就是數(shù)據(jù)鸵闪;V呢是指view,view就是視圖暑诸,視圖就是編寫(xiě)的頁(yè)面蚌讼;C就是controller,也就是控制器个榕,控制器也就是業(yè)務(wù)邏輯篡石。MVVM中第一個(gè)M是前端從API中獲取的數(shù)據(jù),第一個(gè)V是前端的頁(yè)面西采,第二個(gè)V是后臺(tái)管理系統(tǒng)的頁(yè)面凰萨,第二個(gè)M是后臺(tái)數(shù)據(jù)庫(kù)里面的數(shù)據(jù)。
優(yōu)點(diǎn):
1.雙向綁定技術(shù)械馆,當(dāng)Model變化時(shí)胖眷,View-Model會(huì)自動(dòng)更新,View也會(huì)自動(dòng)變化霹崎。很好做到數(shù)據(jù)的一致性瘦材,不用擔(dān)心,在模塊的這一塊數(shù)據(jù)是這個(gè)值仿畸,在另一塊就是另一個(gè)值了。所以MVVM模式有些時(shí)候又被稱(chēng)作:model-view-binder模式。
2.View的功能進(jìn)一步的強(qiáng)化错沽,具有控制的部分功能簿晓,若想無(wú)限增強(qiáng)它的功能,甚至控制器的全部功幾乎都可以遷移到各個(gè)View上(不過(guò)這樣不可取千埃,那樣View干了不屬于它職責(zé)范圍的事情)憔儿。View可以像控制器一樣具有自己的View-Model.
3.由于控制器的功能大都移動(dòng)到View上處理,大大的對(duì)控制器進(jìn)行了瘦身放可。不用再為看到龐大的控制器邏輯而發(fā)愁了谒臼。
缺點(diǎn):
第一點(diǎn):數(shù)據(jù)綁定使得Bug很難被調(diào)試。你看到界面異常了耀里,有可能是你View的代碼有Bug蜈缤,也可能是Model的代碼有問(wèn)題。數(shù)據(jù)綁定使得一個(gè)位置的Bug被快速傳遞到別的位置冯挎,要定位原始出問(wèn)題的地方就變得不那么容易了底哥。
第二點(diǎn):一個(gè)大的模塊中,model也會(huì)很大房官,雖然使用方便了也很容易保證了數(shù)據(jù)的一致性趾徽,當(dāng)時(shí)長(zhǎng)期持有,不釋放內(nèi)存翰守,就造成了花費(fèi)更多的內(nèi)存孵奶。
第三點(diǎn):數(shù)據(jù)雙向綁定不利于代碼重用±澹客戶端開(kāi)發(fā)最常用的重用是View了袁,但是數(shù)據(jù)雙向綁定技術(shù),讓你在一個(gè)View都綁定了一個(gè)model事示,不同模塊的model都不同早像。那就不能簡(jiǎn)單重用View了。
17肖爵、angular指令
概述:
指令是所有AngularJs應(yīng)用最重要的部分卢鹦。一個(gè)指令用來(lái)引入新的HTML語(yǔ)法。指令是DOM元素上的標(biāo)記劝堪,使元素?fù)碛刑囟ǖ男袨榧阶浴Ee例來(lái)說(shuō),靜態(tài)的HTML不知道如何來(lái)創(chuàng)建和展現(xiàn)一個(gè)日期選擇器控件秒啦。讓HTML能識(shí)別 這個(gè)語(yǔ)法熬粗,我們需要使用指令。
一般考慮到瀏覽器的兼容性余境,強(qiáng)烈建議使用默認(rèn)的屬性就可以驻呐,即以屬性的形式來(lái)進(jìn)行聲明
Angular指令是擴(kuò)展的HTML屬性灌诅,帶有前綴ng-
AngularJS通過(guò)內(nèi)置的指令來(lái)為應(yīng)用添加功能
Angular允許自定義指令
例如:
ng-app指令初始化一個(gè)AngularJS應(yīng)用程序,ng-init指令初始化應(yīng)用程序含末,ng-model指令把元素值(比如輸入域的值)綁定到應(yīng)用程序猜拾,ng-repeat重復(fù)特定的元素,ng-show有條件地顯示一個(gè)元素
18佣盒、Vue指令
v-text:更新元素的textCountent
v-html:更新元素的innerHTML挎袜。
v-show:根據(jù)表達(dá)式的真假值,切換元素的display ?CSS屬性
v-if:根據(jù)表達(dá)式的值的真假條件渲染元素肥惭。在切換時(shí)元素及它的數(shù)據(jù)綁定/組件被銷(xiāo)毀并重建盯仪。如果元素是,將提出它的內(nèi)容作為條件塊
v-for:基于源數(shù)據(jù)多次渲染元素或模板塊
v-on:綁定事件監(jiān)聽(tīng)器蜜葱。事件類(lèi)型由參數(shù)指定全景。表達(dá)式可以是一個(gè)方法的名字或一個(gè)內(nèi)聯(lián)語(yǔ)句,如果沒(méi)有修飾符也可以省略笼沥。 ????縮寫(xiě):@
v-bind:動(dòng)態(tài)的綁定一個(gè)或多個(gè)特性蚪燕,或一個(gè)組件prop到表達(dá)式
v-model:在表單控件或組件上創(chuàng)建雙向綁定
v-pre:跳過(guò)這個(gè)元素和它的子元素的編譯過(guò)程”记常可以用來(lái)顯示原始Mustache標(biāo)簽馆纳。跳過(guò)大量沒(méi)有指令的節(jié)點(diǎn)會(huì)加快編譯
19、ngRoute和ui-route相比
$when/$state:路由狀態(tài)配置的時(shí)候
$routeParams/$stateParams:帶參數(shù)的時(shí)候的配置
$routeProvider/$stateProvider:依賴(lài)注入的模塊
ng-view/ui-view:頁(yè)面中綁定到指令
詳情:
uiRoute中可以嵌套更深層次的路由汹桦,也就是路由中可以由路由(大致有兩種情況:1.橫向的鲁驶、2.縱向的)//嵌套路由、多視圖路由
ngRoute中就不能嵌套更深的路由
20.angularjs中服務(wù)的正確寫(xiě)法是舞骆?
A钥弯、ng-service
B、ng-server
C督禽、ng-command√
D脆霎、ng-class
21.angularjs中關(guān)于服務(wù)的說(shuō)法錯(cuò)誤的是
A、避免全局對(duì)象污染
B狈惫、能注入到其它組件
C睛蛛、避免代碼分散到各處
D、主要進(jìn)行DOM操作和數(shù)據(jù)綁定 √
22.angularjs中指令中的compile參數(shù)是在什么時(shí)候運(yùn)行的胧谈?
A忆肾、在生成DOM前掃描并生成
B、在生成DOM中掃描并生成
C菱肖、在生成DOM后掃描并生成 ?√
D客冈、以上都不是
23.angularjs中control間通信最好使用什么方式?
A稳强、回調(diào)
B场仲、全局變量
C和悦、廣播 ?√
D、函數(shù)調(diào)用
24.angularjs中的服務(wù)實(shí)質(zhì)上是
A燎窘、網(wǎng)絡(luò)服務(wù)
B摹闽、單例對(duì)象 ?√
C、接口對(duì)象
D褐健、函數(shù)調(diào)用
25.angularjs指令中compile主要是做什么用的?
A澜汤、綁定DOM√
B蚜迅、數(shù)據(jù)綁定
C、定義模版
D俊抵、以上都不是
26.angularjs中的$apply()的作用是谁不?
A、手動(dòng)綁定外部數(shù)據(jù)
B徽诲、格式化數(shù)據(jù)
C刹帕、使方法生效 √
D、發(fā)送消息給其它c(diǎn)ontroller
27.AngularJS中指定控制器的是哪個(gè)指令谎替?
A偷溺、ng-route
B、ng-template
C钱贯、ng-model
D挫掏、ng-controller√
28.關(guān)于angularjs說(shuō)法,錯(cuò)誤的是
A秩命、前端mvc尉共,極大降低前端開(kāi)發(fā)的耦合
B、極大的豐富了dom操作 √
C弃锐、實(shí)現(xiàn)了數(shù)據(jù)雙向綁定
D袄友、實(shí)現(xiàn)了依賴(lài)注入
29.AngularJS中頁(yè)面中用于數(shù)據(jù)綁定的占位符是什么?
A霹菊、%% %%
B剧蚣、## ##
C、{{ }}√
D浇辜、&& &&
30.angularjs中定義服務(wù)哪種方法是錯(cuò)誤的券敌?
A、$provide
B柳洋、factory
C待诅、service
D、$instance√
31.ng-bind與{{}}有區(qū)別嗎熊镣?B
A卑雁、有區(qū)別募书,在我們載入數(shù)據(jù)的時(shí)候ng-bind會(huì)出現(xiàn)一瞬間的亂碼
B、有區(qū)別测蹲,在我們載入數(shù)據(jù)的時(shí)候{{}}會(huì)出現(xiàn)一瞬間的亂碼
C莹捡、沒(méi)有什么區(qū)別,都可以將我們獲取的數(shù)據(jù)分配到頁(yè)面上
32.【多選】以下說(shuō)法正確的是AB
A扣甲、angular.toJson()將對(duì)象轉(zhuǎn)成字符串
B篮赢、Angular.fromJson()將字符串轉(zhuǎn)成對(duì)象
C、angular.toJson()將字符串轉(zhuǎn)成對(duì)象
D琉挖、Angular.fromJson()將對(duì)象轉(zhuǎn)成字符串
33.以下angular遍歷數(shù)據(jù)函數(shù)書(shū)寫(xiě)正確的是(key代表鍵值启泣,value代表鍵名)C
A、angular.foreach($data as $key=>$value)
B示辈、angular.foreach($data as $value=>$key)
C寥茫、angular.forEach(data,function(key,value){})
D、angular.forEach(data,function(value,key){})