日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

Angular面试题三

發(fā)布時(shí)間:2024/4/17 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Angular面试题三 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

十六、一個(gè) angular 應(yīng)用應(yīng)當(dāng)如何良好地分層?

目錄結(jié)構(gòu)的劃分

1、對(duì)于小型項(xiàng)目,可以按照文件類型組織,比如:

css

Js? {

?controllers

?models

?services

?filters

?? }

templates

2、但是對(duì)于規(guī)模較大的項(xiàng)目,最好按業(yè)務(wù)模塊劃分,比如:

css

Modules

? account

? controllers

? models

? services

? filters

? templates

?disk

? controllers

? models

? services

? filters

? templates

modules 下最好再有一個(gè) common 目錄來(lái)存放公共的東西。

3.邏輯代碼的拆分

作為一個(gè) MVVM 框架,Angular 應(yīng)用本身就應(yīng)該按照 模型,視圖模型(控制器),視圖來(lái)劃分。

這里邏輯代碼的拆分,主要是指盡量讓 controller 這一層很薄。提取共用的邏輯到 service 中 (比如后臺(tái)數(shù)據(jù)的請(qǐng)求,數(shù)據(jù)的共享和緩存,基于事件的模塊間通信等),提取共用的界面操作到 directive 中(比如將日期選擇、分頁(yè)等封裝成組件等),提取共用的格式化操作到 filter 中等等。

在復(fù)雜的應(yīng)用中,也可以為實(shí)體建立對(duì)應(yīng)的構(gòu)造函數(shù),比如硬盤(Disk)模塊,可能有列表、新建、詳情這樣幾個(gè)視圖,并分別對(duì)應(yīng)的有 controller,那么可以建一個(gè) Disk 構(gòu)造函數(shù),里面完成數(shù)據(jù)的增刪改查和驗(yàn)證操作,有跟 Disk 相關(guān)的 controller,就注入 Disk 構(gòu)造器并生成一個(gè)實(shí)例,這個(gè)實(shí)例就具備了增刪改查和驗(yàn)證方法。這樣既層次分明,又實(shí)現(xiàn)了復(fù)用(讓 controller 層更薄了)。

?

十七、angular 應(yīng)用常用哪些路由庫(kù),各自的區(qū)別是什么?

Angular1.x 中常用 ngRoute 和 ui.router,還有一種為 Angular2 設(shè)計(jì)的 new router (面向組件)。后面那個(gè)沒(méi)在實(shí)際項(xiàng)目中用過(guò),就不講了。

無(wú)論是 ngRoute 還是 ui.router,作為框架額外的附加功能,都必須以 模塊依賴 的形式被引入。

區(qū)別

ngRoute 模塊是 Angular 自帶的路由模塊,而 ui.router 模塊是基于 ngRoute模塊開(kāi)發(fā)的第三方模塊。

ui.router 是基于 state (狀態(tài))的, ngRoute 是基于 url 的,ui.router模塊具有更強(qiáng)大的功能,主要體現(xiàn)在視圖的嵌套方面。

使用 ui.router 能夠定義有明確父子關(guān)系的路由,并通過(guò) ui-view 指令將子路由模版插入到父路由模板的 <div ui-view></div> 中去,從而實(shí)現(xiàn)視圖嵌套。而在 ngRoute 中不能這樣定義,如果同時(shí)在父子視圖中 使用了 <div ng-view></div> 會(huì)陷入死循環(huán)。

示例

// ngRoute

var app = angular.module('ngRouteApp', ['ngRoute']);

app.config(function($routeProvider){

? $routeProvider

??? .when('/main', {

????? templateUrl: "main.html",

????? controller: 'MainCtrl'

??? })

??? .otherwise({ redirectTo: '/tabs' });

?

?

// ui.router

var app = angular.module("uiRouteApp", ["ui.router"]);

app.config(function($urlRouterProvider, $stateProvider){

? $urlRouterProvider.otherwise("/index");

? $stateProvider

??? .state("Main", {

????? url: "/main",

????? templateUrl: "main.html",

????? controller: 'MainCtrl'

??? })

?

十八、如果通過(guò)angular的directive規(guī)劃一套全組件化體系,可能遇到哪些挑戰(zhàn)?

件如何與外界進(jìn)行數(shù)據(jù)的交互,以及如何通過(guò)簡(jiǎn)單的配置就能使用吧。

?

十九、分屬不同團(tuán)隊(duì)進(jìn)行開(kāi)發(fā)的 angular 應(yīng)用,如果要做整合,可能會(huì)遇到哪些問(wèn)題,如何解決?

可能會(huì)遇到不同模塊之間的沖突。

比如一個(gè)團(tuán)隊(duì)所有的開(kāi)發(fā)在 moduleA 下進(jìn)行,另一團(tuán)隊(duì)開(kāi)發(fā)的代碼在 moduleB 下

angular.module('myApp.moduleA', [])

? .factory('serviceA', function(){

??? ...

? })

?

angular.module('myApp.moduleB', [])

? .factory('serviceA', function(){

??? ...

? })?

?

angular.module('myApp', ['myApp.moduleA', 'myApp.moduleB'])?

會(huì)導(dǎo)致兩個(gè) module 下面的 serviceA 發(fā)生了覆蓋。

貌似在 Angular1.x 中并沒(méi)有很好的解決辦法,所以最好在前期進(jìn)行統(tǒng)一規(guī)劃,做好約定,嚴(yán)格按照約定開(kāi)發(fā),每個(gè)開(kāi)發(fā)人員只寫特定區(qū)塊代碼。

轉(zhuǎn)載于:https://www.cnblogs.com/ndos/p/8331685.html

總結(jié)

以上是生活随笔為你收集整理的Angular面试题三的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。