欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

詳解Angular調(diào)試技巧之報(bào)錯(cuò)404(not found)

 更新時(shí)間:2018年01月31日 11:40:22   作者:全棧開(kāi)發(fā)之道  
本篇文章主要介紹了詳解Angular調(diào)試技巧之報(bào)錯(cuò)404(not found),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧

序言

放假期間,學(xué)生忙著充電,學(xué)習(xí)“全棧開(kāi)發(fā)”的不在少數(shù),我時(shí)常收到讀者的反饋,在調(diào)試《全棧開(kāi)發(fā)之道》一書的實(shí)例時(shí),遇到困惑。 盡管會(huì)遇到各種各樣的問(wèn)題,但總體來(lái)講,可以歸結(jié)為一個(gè)技術(shù)點(diǎn),那就是—— Angular的調(diào)試。

編寫Angular 代碼并不難,難的是調(diào)試Angular代碼。對(duì)于Angular新手來(lái)說(shuō),調(diào)試Angular需要一個(gè)過(guò)程,并在這個(gè)過(guò)程中不斷積累經(jīng)驗(yàn),一看到報(bào)錯(cuò),就能八九不離十猜出問(wèn)題出在什么地方。

這篇文章,我們先來(lái)從常見(jiàn)的Angular調(diào)試技巧講起,如果遇到404 (not found)報(bào)錯(cuò),將怎么辦?

模擬一個(gè)調(diào)試場(chǎng)景

《全棧開(kāi)發(fā)之道》一書的實(shí)例 6.3.3 章節(jié)——單頁(yè)面應(yīng)用的實(shí)現(xiàn),要實(shí)現(xiàn)這樣的一個(gè)效果,如圖所示:

單頁(yè)面應(yīng)用效果

當(dāng)點(diǎn)擊 Home、About 、 Contact 時(shí),下方的內(nèi)容會(huì)相應(yīng)地發(fā)生變化,而不需要頁(yè)面發(fā)送一個(gè)新的請(qǐng)求。 單頁(yè)面應(yīng)用就是在一個(gè)頁(yè)面內(nèi)自動(dòng)發(fā)生變化,也不用來(lái)回地跳轉(zhuǎn)到新的頁(yè)面,用戶體驗(yàn)大大提升。

為了實(shí)現(xiàn)這樣的單頁(yè)面應(yīng)用,書中創(chuàng)建了html文件(index.html、home.html、about.html、contact.html), 還有一個(gè) myapp.js 用于router 和 controller, 并創(chuàng)建了應(yīng)用程序的入口server.js

按照書上的教程,一步步完成代碼的輸入, 直到最后運(yùn)行 node server.js 時(shí),發(fā)現(xiàn)點(diǎn)擊 Home、About、Contact 按鈕時(shí),下方的內(nèi)容沒(méi)有發(fā)生變化。 代碼是沒(méi)有問(wèn)題的,這又是是怎么回事呢?

調(diào)試技巧

友情提示:

在調(diào)試 Angular時(shí),一定要用 Chrome 瀏覽器。這一點(diǎn)很容易理解,Angular 是Google 家,Chrome 也是Google 家的,毫無(wú)疑問(wèn),Chrome 對(duì)自家的產(chǎn)品是支持的最好的。

在終端窗口運(yùn)行 node server.js

在Chrome 瀏覽器中,輸入: http://localhost:3000

此時(shí),打開(kāi)Chrome 瀏覽器的開(kāi)發(fā)工具, 如果是Wiindows 系統(tǒng),用F12鍵; 如果是Mac 系統(tǒng),用 Option+Command+I ,這里的截圖以Mac 系統(tǒng)為例。

Angular 報(bào)錯(cuò)提示

先來(lái)看第一行錯(cuò)誤,很多時(shí)候,第二行錯(cuò)誤是第一行引起的;如果第一個(gè)錯(cuò)誤解決了,下面的報(bào)錯(cuò)會(huì)自動(dòng)消失。

http://localhost:3000/myapp.js 404 (Not Found)

在網(wǎng)絡(luò)術(shù)語(yǔ)中,404 的意思是,你要請(qǐng)求的文件不存在。 這在傳統(tǒng)的開(kāi)發(fā)環(huán)境中,比如C、Java,即便文件找不見(jiàn),也不會(huì)出現(xiàn) 404 錯(cuò)誤。 再看接下來(lái)的提示 Not Found, 意思是沒(méi)找見(jiàn)。

報(bào)錯(cuò)排查方法

遇到這種報(bào)錯(cuò),排查的方法是,先看這個(gè)文件是否存在,再看它的訪問(wèn)路徑是否正確。

(1)確認(rèn)該文件是否存在。 文件名必須嚴(yán)格一致,文件名本身不用區(qū)分大小寫。 比如: index.html 與 Index.html 是同一個(gè)文件, myapp.js 與 myApp.js 也是一回事。

(2)排查文件的路徑。 排查文件名是否正確,這事簡(jiǎn)單; 而排查文件的路徑,就是一個(gè)技術(shù)活兒了。 為什么這么說(shuō)呢? 這是因?yàn)椋贏ngularJS中,有一個(gè)靜態(tài)資源的概念。myApp.js文件分明是存在的,為何找不見(jiàn)呢? 先來(lái)看引用myApp.js 的那行代碼。

在index.html 的 <head> 標(biāo)簽中:

<script src="myapp.js"></script>

引用一個(gè)文件時(shí),要么給出絕對(duì)路徑,要么給出相對(duì)路徑,myapp.js 的文件路徑是怎么約定的呢?

這要看 server.js 文件是怎么規(guī)定的路徑約定,代碼如下:

app.use(express.static(path.join(__dirname, 'public')));

__dirname是一個(gè)路徑,它是指當(dāng)前文件(server.js)所在的路徑,而public 是__dirname的下一級(jí)目錄。 path.join 是一個(gè)規(guī)定的表單式,express.static 表示該應(yīng)用程序指定的 靜態(tài)資源存放的位置。

按照這個(gè)概念,上面的 home.html 、 about.html、 contact.html、myapp.js 四個(gè)文件都是靜態(tài)資源文件,再來(lái)審視這行代碼:

<script src="myapp.js"></script>

代碼這么寫時(shí),應(yīng)用程序要在當(dāng)前路徑的 public 目錄遍歷 myapp.js 文件。 讀到這里,你就明白報(bào)錯(cuò)404 的原因所在了吧。
需要把這些靜態(tài)資源文件,統(tǒng)一放在public 文件夾下,如圖所示。

靜態(tài)資源文件路徑

進(jìn)一步討論

既然是路徑惹的禍,那么能不能換一種思路,改一下靜態(tài)資源路徑的設(shè)置呢? 比如,修改server.js 文件的代碼,如下:

app.use(express.static(path.join(__dirname, '/')));

這樣一來(lái),上面那四個(gè)文件就不用放到public了, 這種方法,雖然沒(méi)有報(bào)錯(cuò),問(wèn)題是,這不是規(guī)范的做法。但凡稍微復(fù)雜一點(diǎn)的應(yīng)用,都會(huì)用到大量的靜態(tài)資源文件,如果不分配路徑,將難以維護(hù)!

小結(jié)

掌握一門編程技術(shù), 僅僅會(huì)編寫代碼是不夠的。 評(píng)價(jià)一個(gè)人的編程水平,就看他的調(diào)試技能是否駕輕就熟。 后續(xù),我要借助一些 Angular專用的調(diào)試工具,模擬一些出現(xiàn)bug的場(chǎng)景,看看如果快速發(fā)現(xiàn)root cause,并給出解決方案。

總之,掌握Angular的調(diào)試技能,是通往高級(jí)全棧工程師的階梯!以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • angular多選表單數(shù)據(jù)綁定的簡(jiǎn)單嘗試

    angular多選表單數(shù)據(jù)綁定的簡(jiǎn)單嘗試

    AngularJS中數(shù)據(jù)綁定相信大家應(yīng)該都不陌生了,這篇文章主要給大家介紹了關(guān)于angular多選表單數(shù)據(jù)綁定的簡(jiǎn)單嘗試,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-05-05
  • angular雙向綁定詳解

    angular雙向綁定詳解

    這篇文章主要為大家介紹了angular雙向綁定,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2021-12-12
  • angular父子組件通信詳解

    angular父子組件通信詳解

    這篇文章主要為大家介紹了angular父子組件通信,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2021-12-12
  • AngularJS中的過(guò)濾器filter用法完全解析

    AngularJS中的過(guò)濾器filter用法完全解析

    這篇文章主要介紹了AngularJS中的過(guò)濾器filter用法,包括Angular中一些常用的自帶的過(guò)濾器的列舉以及自定義filter的方法,需要的朋友可以參考下
    2016-04-04
  • Angular5中調(diào)用第三方j(luò)s插件的方法

    Angular5中調(diào)用第三方j(luò)s插件的方法

    下面小編就為大家分享一篇Angular5中調(diào)用第三方j(luò)s插件的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-02-02
  • Angularjs Ng_repeat中實(shí)現(xiàn)復(fù)選框選中并顯示不同的樣式方法

    Angularjs Ng_repeat中實(shí)現(xiàn)復(fù)選框選中并顯示不同的樣式方法

    今天小編就為大家分享一篇Angularjs Ng_repeat中實(shí)現(xiàn)復(fù)選框選中并顯示不同的樣式方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-09-09
  • 深入淺析AngularJs模版與v-bind

    深入淺析AngularJs模版與v-bind

    v-bind與{{}}都可以對(duì)數(shù)據(jù)進(jìn)行綁定,接下來(lái)通過(guò)本文給大家介紹AngularJs模版與v-bind的相關(guān)知識(shí),感興趣的朋友一起看看吧
    2018-07-07
  • AngularJS整合Springmvc、Spring、Mybatis搭建開(kāi)發(fā)環(huán)境

    AngularJS整合Springmvc、Spring、Mybatis搭建開(kāi)發(fā)環(huán)境

    這篇文章主要介紹了AngularJS整合Springmvc、Spring、Mybatis搭建開(kāi)發(fā)環(huán)境的相關(guān)資料,為學(xué)習(xí)使用AngularJS做好基礎(chǔ)準(zhǔn)備,感興趣的小伙伴們可以參考一下
    2016-02-02
  • angular中如何綁定iframe中src的方法

    angular中如何綁定iframe中src的方法

    這篇文章主要介紹了angular中如何綁定iframe中src的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2019-02-02
  • Angular刷新當(dāng)前頁(yè)面的實(shí)現(xiàn)方法

    Angular刷新當(dāng)前頁(yè)面的實(shí)現(xiàn)方法

    這篇文章主要介紹了Angular刷新當(dāng)前頁(yè)面的實(shí)現(xiàn)方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-11-11

最新評(píng)論