最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

使用JSLint提高JS代碼質(zhì)量方法分享

 更新時間:2013年12月16日 15:41:13   作者:  
這篇文章主要介紹了JSLint提高JS代碼質(zhì)量的方法,有需要的朋友可以參考一下

隨著富 Web 前端應(yīng)用的出現(xiàn),開發(fā)人員不得不重新審視并重視 JavaScript 語言的能力和使用,拋棄過去那種只靠“復(fù)制 / 粘貼”常用腳本完成簡單前端任務(wù)的模式。JavaScript 語言本身是一種弱類型腳本語言,具有相對于 C++ 或 Java 語言更為松散的限制,一切以函數(shù)為中心的函數(shù)式編程思想也為開發(fā)人員提供了更加靈活的語法實現(xiàn)。然而,這種靈活性在帶來高效的同時,也成為初學(xué)或者經(jīng)驗不足的 JavaScript 開發(fā)人員的噩夢。形式各異的代碼風(fēng)格、隱含錯誤的代碼行為,嚴(yán)重影響了整體代碼的可讀性和穩(wěn)定性,成為 Web 項目中最為常見問題之一。

因而,我們需要一個有效的 JavaScript 代碼質(zhì)量工具,以便能及時發(fā)現(xiàn)并修正 JavaScript 代碼中所隱含的問題,保證代碼交付質(zhì)量。JSLint 作為一個靈活有效的 JavaScript 代碼質(zhì)量檢測工具,允許使用者指定滿足其特定應(yīng)用開發(fā)需求的編碼風(fēng)格約定,使得整個項目的風(fēng)格統(tǒng)一,這種“規(guī)則”(options)驅(qū)動的工作方式使得 JSLint 能夠適用于不同的代碼檢測需求。本文將首先向讀者介紹 JSLint 的基本概念和作用,講解其基于規(guī)則的工作方式,而后通過一個示例闡明其基本的使用方法,最后介紹如何將 JSLint 整合到 Ant 和 Eclipse 的應(yīng)用過程,以全方面展示如何將 JSLint 在日常開發(fā)任務(wù)中加以運用。

什么是 JSLint
JavaScript 作為一門年輕、語法靈活多變且對格式要求相對松散的語言,代碼格式的混亂和某些語言特性的不正確使用,往往使得最終交付的產(chǎn)品中包含許多因編碼風(fēng)格約定造成的未預(yù)見的行為或錯誤,這種習(xí)慣性的問題如果不及時指出并修改,往往會在項目的迭代過程中不斷的重現(xiàn),嚴(yán)重影響 Web 產(chǎn)品的穩(wěn)定性與安全性。JSLint 正是 Douglas Crockford 同學(xué)為解決此類問題創(chuàng)建的工具,JSLint 除了能指出這些不合理的約定,還能標(biāo)出結(jié)構(gòu)方面的問題。雖然 JSLint 不能保證代碼邏輯一定正確,但卻有助于發(fā)現(xiàn)錯誤并教會開發(fā)人員一些好的編碼實踐。值得一提的是 JSLint 工具本身也是一段 JavaScript 代碼,它是檢驗 JavaScript 代碼質(zhì)量的 JavaScript 腳本。JSLint 對 JavaScript 腳本的質(zhì)量檢測主要包括以下幾個方面:

•檢測語法錯誤:例如大括號“{}”的配對錯誤。
•變量定義規(guī)范:例如未定義變量的檢測。
•代碼格式規(guī)范:例如句末分號的缺失。
•蹩腳語言特性的使用檢測:如 eval 和 with 的使用限制。
JSLint 的版本更新一直處于活躍狀態(tài),截至本文撰寫之時,JSLint 最新版本的發(fā)布時間為 2010-10-10。很多主流代碼編輯器均對 JSLint 提供了良好的擴(kuò)展支持,包括 Eclipse、VS2008 等等。

目前,與 JSLint 功能類似的 JavaScript 代碼檢測工具有很多,包括:YUI Test、Firebug、MS Script Debugger 、CompanionJS 等等,它們中大多數(shù)都是以瀏覽器插件的形式存在于客戶端瀏覽器進(jìn)行 JavaScript 運行時的檢測和調(diào)試,JSLint 與這些工具的重要區(qū)別在于其更加注重靜態(tài)代碼格式的檢測,而這也正是當(dāng)前火熱的敏捷開發(fā)中持續(xù)構(gòu)建所需要和提倡的。

認(rèn)識 JSLint 規(guī)則
JSLint 執(zhí)行代碼質(zhì)量檢測的原理核心在于用戶設(shè)定的規(guī)則集。JSLint 默認(rèn)提供的規(guī)則集包含了 Web 開發(fā)人員多年積累下來的認(rèn)為不好的開發(fā)風(fēng)格,我們可以根據(jù)自己項目的需求選擇構(gòu)建一套特定的規(guī)則。JSLint 將根據(jù)它進(jìn)行對 JavaScript 腳本的掃描工作,并給出相應(yīng)的問題描述信息。規(guī)則的形式體現(xiàn)為多組鍵值對:[param:option],以規(guī)則名做鍵,對規(guī)則調(diào)用與否做值。例如規(guī)則:“plusplus:true”是不允許 ++ 和 -- 運算符的出現(xiàn),“undef:true”是不允許使用未定義的變量。

由于 JSLint 工具本質(zhì)上是一個普通的 JS 腳本,其運行也自然依賴于一個 JS 運行引擎,其被引擎加載后會在內(nèi)存中產(chǎn)生一個全局 JSLint 函數(shù)對象,該函數(shù)對象需要兩個輸入量:source 和 options,前者用來指定待檢測的腳本文件被解析后生成的字符串或字符串?dāng)?shù)組,后者則表示用戶自定義的規(guī)則選項。若 options 為空,JSLint 則使用其默認(rèn)的規(guī)則對 source 進(jìn)行掃描檢測。

整個檢測過程就是對腳本中所含 JSLINT (source, options) 函數(shù)的一次執(zhí)行過程。當(dāng)指定的 source 腳本在 options 條件下檢測通過,則 JSLint 返回 true,否則返回 false,而這時則可以通過 JSLINT.errors 對象獲得詳細(xì)的錯誤信息。圖 1 展示了 JSLint 的整個工作過程。

圖 1. JSLint 工作過程示意圖

如圖所示,規(guī)則集的配置方式有三種:

1.直接通過修改 JSLint.js 源碼來修改默認(rèn)規(guī)則。
2.在 JSLint 函數(shù)運行時,同時設(shè)置 options 參數(shù),動態(tài)改變其規(guī)則選項(first overwrite)。此方式適用于對批量 js 文件使用同樣的一組自定義規(guī)則。
3.通過在待檢測的 js 文件頭部添加注釋類型的規(guī)則,對單個 js 文件添加適用于該文件代碼的特殊規(guī)則(second overwrite)。此方式適用于對不同 js 文件設(shè)置特定的檢測規(guī)則,通常用于在該文件中引入一些全局變量。

相關(guān)文章

  • JavaScript數(shù)據(jù)類型轉(zhuǎn)換簡單方法舉例

    JavaScript數(shù)據(jù)類型轉(zhuǎn)換簡單方法舉例

    JavaScript是一種無類型語言,但同時JavaScript提供了一種靈活的自動類型轉(zhuǎn)換的處理方式,下面這篇文章主要給大家介紹了關(guān)于JavaScript數(shù)據(jù)類型轉(zhuǎn)換的相關(guān)資料,需要的朋友可以參考下
    2023-12-12
  • 計算世界完全對稱日的js代碼,粗糙版

    計算世界完全對稱日的js代碼,粗糙版

    世界完全對稱日,指的是公歷紀(jì)年日期中數(shù)字左右完全對稱的日期,這一天朋友們可以互送祝福同時讓大家感嘆時間的寶貴。
    2011-11-11
  • js調(diào)用后臺、后臺調(diào)用前臺等方法總結(jié)

    js調(diào)用后臺、后臺調(diào)用前臺等方法總結(jié)

    這篇文章主要對js調(diào)用后臺,后臺調(diào)用前臺等方法做個總結(jié),需要的朋友可以參考下
    2014-04-04
  • JS高級運動實例分析

    JS高級運動實例分析

    這篇文章主要介紹了JS高級運動,結(jié)合實例形式分析了javascript運動框架原理、實現(xiàn)與應(yīng)用技巧,需要的朋友可以參考下
    2016-12-12
  • 微信小程序?qū)崿F(xiàn)簡單聊天室

    微信小程序?qū)崿F(xiàn)簡單聊天室

    這篇文章主要為大家詳細(xì)介紹了微信小程序?qū)崿F(xiàn)簡單聊天室,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-07-07
  • JavaScript中一些奇怪的問題及解決分享

    JavaScript中一些奇怪的問題及解決分享

    JavaScript?在開發(fā)過程中可能會出現(xiàn)很多奇怪的問題。這篇文章主要為大家整理了一些JavaScript中奇怪的問題及解決方法,感興趣的可以了解一下
    2023-03-03
  • js 實現(xiàn)ajax發(fā)送步驟過程詳解

    js 實現(xiàn)ajax發(fā)送步驟過程詳解

    這篇文章主要介紹了js 實現(xiàn)ajax發(fā)送過程詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-07-07
  • JS前端解壓zip的方法和技巧分享

    JS前端解壓zip的方法和技巧分享

    這篇文章主要介紹了JS前端解壓zip的方法和技巧,業(yè)務(wù)中有時候需要獲取某個 zip 壓縮包內(nèi)的文件內(nèi)容展示到前端,在 zip 包體積不是那么大的時候并且不涉及壓縮包解密的時候,可以考慮純前端方案,需要的朋友可以參考下
    2024-03-03
  • JavaScript實現(xiàn)tab欄切換的效果

    JavaScript實現(xiàn)tab欄切換的效果

    這篇文章主要為大家詳細(xì)介紹了JavaScript實現(xiàn)tab欄切換的效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • 微信小程序中使用自定義字體的實現(xiàn)與體驗優(yōu)化

    微信小程序中使用自定義字體的實現(xiàn)與體驗優(yōu)化

    由于微信支持的字體非常有限,不能滿足個性化的需求,因此在開發(fā)的過程中可能會需要使用自定義字體,下面這篇文章主要給大家介紹了關(guān)于微信小程序中使用自定義字體的實現(xiàn)與體驗優(yōu)化的相關(guān)資料,需要的朋友可以參考下
    2022-02-02

最新評論

安化县| 通道| 靖西县| 凌云县| 河东区| 南乐县| 丰都县| 华阴市| 霞浦县| 南溪县| 遵化市| 北流市| 水富县| 康马县| 施甸县| 鲁甸县| 黄石市| 思茅市| 远安县| 曲水县| 永丰县| 庆城县| 建湖县| 汶川县| 喀喇沁旗| 游戏| 鸡东县| 南通市| 司法| 合作市| 体育| 宜宾市| 九龙县| 齐河县| 海宁市| 元氏县| 东安县| 积石山| 兰考县| 丹凤县| 孟村|