Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 国产精品女上位在线观看,亚洲激情99,美女一级毛片

          整合營(yíng)銷服務(wù)商

          電腦端+手機(jī)端+微信端=數(shù)據(jù)同步管理

          免費(fèi)咨詢熱線:

          JavaScript 也可以搞定嵌入式開發(fā)? - 硬創(chuàng)公開課

          賓介紹:鄭曄,Ruff CTO,Oracle Duke選擇獎(jiǎng)獲獎(jiǎng)作品Moco的作者,目前投身于 IoT 領(lǐng)域,致力于簡(jiǎn)化 IoT 應(yīng)用的開發(fā)方式。他多次在各種媒體上發(fā)表文章,在各種技術(shù)大會(huì)上做過演講,對(duì)敏捷軟件開發(fā)、軟件設(shè)計(jì)、領(lǐng)域特定語(yǔ)言等方面,有著深刻理解,愿意分享自己對(duì)于軟件開發(fā)的理解,也愿意吸收新的知識(shí),更愿意與人暢聊軟硬件開發(fā)。

          【Ruff CTO 鄭曄】

          IoT(Internet of Things)是大家公認(rèn)的未來(lái)。但讓人尷尬的是,這些代表未來(lái)的炫酷產(chǎn)品似乎只存在于業(yè)內(nèi)人士的 PPT 中。真正走進(jìn)普通人生活的,大多只是一些“帶有 Wi-Fi 的普通硬件”。和大多數(shù)生態(tài)普及過程中遇到的問題相同,IoT 缺少一個(gè)關(guān)鍵的系統(tǒng)——應(yīng)用。應(yīng)用缺失,自然難以營(yíng)造用戶生態(tài)。然而這并不完全是開發(fā)者的責(zé)任,大多數(shù)情況下,開發(fā)者都處在臣妾做不到的狀態(tài),因?yàn)樯婕坝布摹扒度胧介_發(fā)”需要非常多的底層硬件代碼基礎(chǔ),這讓廣大的軟件程序猿望而卻步。

          “Ruff”的目標(biāo)就是解決這個(gè)問題。簡(jiǎn)而言之,Ruff 可以允許開發(fā)者用普及的 JavaScript 語(yǔ)言進(jìn)行嵌入式開發(fā),他們究竟是怎么做到的呢?且聽 Ruff CTO 鄭曄慢慢道來(lái)。

          何謂 Ruff?

          Ruff 是一個(gè)硬件應(yīng)用開發(fā)平臺(tái)。簡(jiǎn)言之,通過 Ruff,開發(fā)者可以使用 JavaScript 開發(fā)硬件應(yīng)用。

          從行業(yè)發(fā)展趨勢(shì)可以看到,IoT(Internet of Things)是大家公認(rèn)的未來(lái)。大家也知道,我國(guó)目前在生產(chǎn)制造的水準(zhǔn)也是世界級(jí)的。但是,從趨勢(shì)到現(xiàn)實(shí)中,中間還欠缺了什么呢?我們看到的是:應(yīng)用。

          我們都在說(shuō)智能硬件。實(shí)際上,所謂智能硬件是一個(gè)“硬件應(yīng)用”,是把硬件和應(yīng)用場(chǎng)景結(jié)合起來(lái)。應(yīng)用的成功本質(zhì)上是個(gè)概率問題,我們之所以還沒有看到很多成功的硬件應(yīng)用,主要是應(yīng)用的總體數(shù)量太少。很多人都能看到這是一片藍(lán)海,但問題是,并不是每個(gè)人都有能力進(jìn)入到這個(gè)領(lǐng)域,因?yàn)橛布?yīng)用的門檻太高了。

          這一點(diǎn)類似于 Nokia 手機(jī)的時(shí)代,很多人都想編寫手機(jī)應(yīng)用,但只有很少量的程序員有能力編寫手機(jī)應(yīng)用,我自己就曾經(jīng)希望買 Nokia 手機(jī)來(lái)做開發(fā),但最后放棄了,也是因?yàn)殚_發(fā)太麻煩。后來(lái)有了 iOS 和 Android,開發(fā)門檻一下子降了下來(lái),大量的程序員涌了進(jìn)來(lái),才有了我們看到的移動(dòng)互聯(lián)網(wǎng)的興起,也才有了微信、滴滴等爆款應(yīng)用。

          所以 Ruff 就是要在硬件應(yīng)用開發(fā)領(lǐng)域解決同樣的問題,降低硬件應(yīng)用開發(fā)的門檻,讓更多有應(yīng)用開發(fā)能力的人進(jìn)入到這個(gè)領(lǐng)域里。

          有一個(gè)前端開發(fā)者,他拿到 Ruff,很快就寫了一個(gè)小應(yīng)用:用打火機(jī)點(diǎn)亮網(wǎng)頁(yè)上的一盞燈。因?yàn)橛辛?Ruff,這個(gè)從來(lái)沒寫過硬件的開發(fā)者,就有機(jī)會(huì)開始編寫硬件應(yīng)用了。這就是 Ruff 降低門檻起到的作用。總結(jié)起來(lái),Ruff 就是要降低硬件應(yīng)用開發(fā)門檻,讓開發(fā)者能夠創(chuàng)造出更多有創(chuàng)意的硬件應(yīng)用。

          硬件應(yīng)用開發(fā)的門檻有多高?

          從現(xiàn)狀來(lái)看,硬件和應(yīng)用完全就是兩套詞匯表,比如,做硬件的人關(guān)心的是,GPIO、I2C、時(shí)序、驅(qū)動(dòng)等,而做應(yīng)用的人關(guān)心的是,需求、用戶體驗(yàn)、高可用性、系統(tǒng)架構(gòu)等。我問過應(yīng)用開發(fā)者什么是 GPIO,他們的表情就像見了鬼一樣;我也曾讓硬件開發(fā)者講講什么是 SOLID 設(shè)計(jì)原則,很少有人能講清楚。

          這就是軟硬件之間的鴻溝,讓一個(gè)人同時(shí)具備硬件和應(yīng)用兩套技能,這是很高的要求。其實(shí),即便是只在硬件開發(fā)領(lǐng)域,除了應(yīng)用以外,做系統(tǒng)的和做硬件的也是不同的話語(yǔ)體系,有人關(guān)注進(jìn)程,有人關(guān)注晶振;有人關(guān)注嵌入式系統(tǒng),有人關(guān)注 PCB。

          讓一個(gè)人掌握好所有的東西,難度系數(shù)會(huì)直線上升。即便有這樣的人,價(jià)格也會(huì)非常高,而且能找到的人數(shù)量也有限。另外,在硬件領(lǐng)域,重復(fù)造輪子的現(xiàn)象是很嚴(yán)重的。很多東西即便開發(fā)者再熟悉,到了一個(gè)新的環(huán)境可能就要重新做一遍,比如,常見的網(wǎng)絡(luò)協(xié)議要移植,常見的驅(qū)動(dòng)要編寫。我的這些印象,全部來(lái)自一個(gè)有20年硬件開發(fā)經(jīng)驗(yàn)的老法師,他將其稱為血淚史。

          與應(yīng)用的對(duì)接中,硬件開發(fā)的過程,基本上是一個(gè)瀑布式開發(fā)的過程,或者說(shuō)一個(gè)自頂向下的過程,也就是說(shuō),把需求確定好了,然后,進(jìn)入一個(gè)開發(fā)過程,這個(gè)過程往往會(huì)持續(xù)很長(zhǎng)一段時(shí)間。從軟件工程的實(shí)踐來(lái)看,這是一種低效的做法,因?yàn)樽霎a(chǎn)品,最重要的是快速反饋,一年前的市場(chǎng)需求和現(xiàn)在的市場(chǎng)需求是不同的。

          所以,在軟件領(lǐng)域有了敏捷、精益等方法論,改善這個(gè)過程,最重要的就是迭代的思想,不斷地對(duì)產(chǎn)品進(jìn)行改進(jìn)。目前市面上很多有想法的人來(lái)自互聯(lián)網(wǎng)領(lǐng)域,他們習(xí)慣了與軟件應(yīng)用開發(fā)者協(xié)同工作,所以,他們也更習(xí)慣采用迭代的思想進(jìn)行工作,但同樣的工作邏輯拿到硬件領(lǐng)域幾乎沒辦法行得通。

          舉個(gè)例子,

          產(chǎn)品經(jīng)理希望迭代地看到產(chǎn)品進(jìn)展,因?yàn)樗南敕ㄐ枰磸?fù)驗(yàn)證,而硬件開發(fā)者希望確定好需求再來(lái)做開發(fā),因?yàn)樵谒倪壿嬂铮布且坏┲瞥删秃茈y改變了。

          造成這種現(xiàn)象更根本的原因是,是硬件制造商在編寫應(yīng)用。而應(yīng)用開發(fā)根本就不是硬件制造商擅長(zhǎng)的。當(dāng)我們可以把硬件和應(yīng)用兩個(gè)概念分開之后,我們就會(huì)發(fā)現(xiàn),同樣的硬件,在不同的場(chǎng)合下,可以有不同的應(yīng)用。

          舉例來(lái)說(shuō),

          • 同樣的飲水機(jī),如果你買了回家,它的應(yīng)用是統(tǒng)計(jì)你家的飲水狀況,提醒你多喝水;

          • 如果把飲水機(jī)租回家,它會(huì)提醒你按時(shí)繳費(fèi),保證正常使用。

          硬件上是一樣的,但應(yīng)用是不同的。解決這個(gè)問題最好的辦法就是分工,讓應(yīng)用開發(fā)者只關(guān)注應(yīng)用,硬件制造商只關(guān)注硬件。將二者聯(lián)系起來(lái),這就是 Ruff 要做的事情。

          為什么是 JavaScript?

          對(duì)程序員來(lái)說(shuō),語(yǔ)言的選擇永遠(yuǎn)是宗教戰(zhàn)爭(zhēng)。我們把 Ruff 定位成一個(gè)應(yīng)用開發(fā)平臺(tái),所以,選擇做技術(shù)選型的時(shí)候,盡可能考慮應(yīng)用開發(fā)者熟悉的東西,所以 Ruff 選擇了 JavaScript。

          首先,我們排除了硬件開發(fā)者最熟悉的 C/C++,因?yàn)?C/C++在多數(shù)程序員眼里是系統(tǒng)語(yǔ)言,一旦使用 C/C++,程序員們就會(huì)回到系統(tǒng)開發(fā)的思路上。

          再次,我們排除的是目前最流行的語(yǔ)言 Java。從受眾的角度考慮,最該考慮的是 Java,這就是 Android 的做法,但在資源受限的硬件上,Java 太重了。

          JavaScript 是一個(gè)恰當(dāng)?shù)恼Z(yǔ)言,原因如下:

          首先,它是一門真正的全平臺(tái)語(yǔ)言,可以運(yùn)行在所有系統(tǒng)上,包括瀏覽器、手機(jī)、服務(wù)器、客戶端,都有。

          其次,隨著 Node.js 的流行,JavaScript 的社區(qū)越來(lái)越活躍,許多新想法都是在這個(gè)社區(qū)內(nèi)涌現(xiàn)出來(lái)的。

          再次,JavaScript 有很多不錯(cuò)的運(yùn)行時(shí)實(shí)現(xiàn),方便我們開展工作。套用軟件開發(fā)社區(qū)里的一個(gè) 說(shuō)法:Atwood 定律,所有能用 JavaScript 寫的應(yīng)用,最終都會(huì)用 JavaScript 寫就。

          然而,根因是受眾面,不需要從頭教育市場(chǎng)。所以,Ruff 選擇了 JavaScript。事實(shí)上,很多大廠也下水做這個(gè)領(lǐng)域,大部分人的選擇也是 JavaScript。

          JavaScript 比 C 語(yǔ)言更有優(yōu)勢(shì)嗎?

          從個(gè)人的角度來(lái)說(shuō),我更愿意比較的是抽象層次,而非簡(jiǎn)單的語(yǔ)法。從技術(shù)的發(fā)展趨勢(shì),我們已經(jīng)非常清楚地看到,應(yīng)用開發(fā)的抽象層次是越來(lái)越高的。

          比如:最開始大家是用機(jī)器碼,因?yàn)橛洃洸环奖阌辛藚R編,又因?yàn)閰R編對(duì)于不同機(jī)型差異太大,而產(chǎn)生了 C 這樣的程序設(shè)計(jì)語(yǔ)言,再往后,C++提供了面向?qū)ο蟪绦蛟O(shè)計(jì),給程序組織提供了一種良好的方案。越高的抽象,意味著編寫同樣多的內(nèi)容用的代碼越少。

          我曾經(jīng)對(duì)比過一個(gè)大廠出的 C/C++的硬件應(yīng)用開發(fā)框架,點(diǎn)亮一個(gè)板載燈,它寫了大約50行左右的代碼,用 Ruff,我寫了3行代碼,還有2行是框架代碼。

          $.ready(function {

          $('#led-r').turnOn;

          });

          通過這段代碼大家就可以感受到差異,真正的核心代碼只有1行,這就是抽象的價(jià)值。

          只使用 JavaScript 能做到怎樣的開發(fā)深度?

          JavaScript 語(yǔ)言社區(qū)已經(jīng)提供了許多好的抽象,比如,基于事件的模型。

          Ruff 還建立了自己建立的抽象。比如劃分了驅(qū)動(dòng)開發(fā)者和應(yīng)用開發(fā)者,只有驅(qū)動(dòng)開發(fā)者需要關(guān)心硬件細(xì)節(jié),而應(yīng)用開發(fā)者只要關(guān)注應(yīng)用邏輯就好了。

          剛才給大家展示的這段代碼就是一段應(yīng)用代碼,你根本看不到硬件參數(shù)這些東西,這就是分層架構(gòu)的力量,抽象的力量。此外,Ruff 在設(shè)計(jì)之初,就考慮了應(yīng)用測(cè)試的問題。用 Ruff 開發(fā)的代碼可以在開發(fā)機(jī)器上把邏輯測(cè)試好,再部署到具體硬件板子上。這樣可以防止因?yàn)橐恍┑图?jí)錯(cuò)誤,反復(fù)燒板子,造成時(shí)間上的浪費(fèi)。

          Ruff 還配套了命令行工具,簡(jiǎn)化應(yīng)用開發(fā)和板卡部署,另外還有一個(gè)軟件倉(cāng)庫(kù),可以讓驅(qū)動(dòng)開發(fā)者上傳自己的驅(qū)動(dòng),與社區(qū)分享。

          至于實(shí)現(xiàn)JavaScript的硬件編程,道理上很簡(jiǎn)單:運(yùn)行一個(gè) JavaScript 引擎,在上面跑 Javascript 的程序。

          從具體的實(shí)現(xiàn)上來(lái)說(shuō),

          第一步:選擇了一個(gè)嵌入式 JavaScript 引擎;

          第二部,在一個(gè)操作系統(tǒng)上把它運(yùn)行起來(lái),在其基礎(chǔ)上構(gòu)建 Ruff,這也是目前對(duì)外發(fā)行的版本。

          簡(jiǎn)單來(lái)說(shuō),這是從打造最小可行產(chǎn)品(MVP)的思路來(lái)做的。Ruff 內(nèi)部正在研發(fā)基于 MCU 的版本,也就是將 JavaScript 引擎直接跑在硬件上。這樣可以更好地解決功耗、實(shí)時(shí)性等問題。

          Ruff 的未來(lái)

          現(xiàn)在,開發(fā)者能看到一些開發(fā)板,例如:樹莓派、Ardunio 和 Intel Edison。而 Ruff 提供了一個(gè)開發(fā)框架。另外 Ruff 本身也提供了一套開發(fā)套件,這么做的原因是為了讓人盡快上手 Ruff。

          更關(guān)鍵的差異在于,這些開發(fā)板只能做小應(yīng)用或是原型,當(dāng)然,這也是 Ruff 開發(fā)套件的現(xiàn)狀。不同的是,我們做 Ruff 的目的不限于此,我們是希望將 Ruff 將來(lái)打通到生產(chǎn)環(huán)節(jié)中。也就是說(shuō),一個(gè)硬件應(yīng)用在軟件代碼完全不用修改的情況下,把它用在更真實(shí)的設(shè)備上,比如 MCU 上。我們很清楚,Ruff 的終點(diǎn)不是開發(fā)板,這與其它的開發(fā)板目標(biāo)是截然不同的。

          坦白來(lái)講,讓應(yīng)用開發(fā)者意識(shí)到自己能夠編寫硬件應(yīng)用會(huì)是比較困難的。很多軟件程序員思考問題的邊界就是硬件,根本不敢想這方面的問題。就像 Android 和 iOS 之前,應(yīng)用開發(fā)者不會(huì)覺得自己能寫手機(jī)應(yīng)用一樣。這里面是一個(gè)意識(shí)的鴻溝,大多數(shù)應(yīng)用開發(fā)者并不覺得硬件開發(fā)和他們有什么關(guān)系。正因?yàn)樗麄冇X得硬件應(yīng)用開發(fā)太困難,才會(huì)退避三舍。

          對(duì)于 Ruff 而言,這是一個(gè)教育市場(chǎng)的過程。其實(shí),硬件應(yīng)用開發(fā)其實(shí)很簡(jiǎn)單:控制你家的電視很簡(jiǎn)單,點(diǎn)亮家里的燈也沒那么難。跨越了意識(shí)上的鴻溝,再來(lái)了解硬件,就不那么困難了。當(dāng)我們的正式版發(fā)布之后,我們會(huì)在開發(fā)者社區(qū)方面投入大量的精力,讓開發(fā)者們意識(shí)到,他們能做的事情其實(shí)更多。

          關(guān)于Ruff的最新動(dòng)態(tài)

          在1月份,Ruff 推出了少量的公測(cè)版套件,定向地發(fā)給了一些有興趣的用戶,軟件 SDK 隨公測(cè)版發(fā)布。大致一個(gè)月左右會(huì)有一次新的發(fā)布。鄭曄表示,正式版在內(nèi)部的備貨基本上已經(jīng)完成,五一之后,就會(huì)正式開始銷售,更多的開發(fā)者就可以嘗試新的開發(fā)體驗(yàn)了。

          Ruff 開發(fā)套件購(gòu)買戳這

          官方網(wǎng)站:ruff.io

          慶假期很適合學(xué)習(xí)點(diǎn)新知識(shí)。前幾天有粉絲在后臺(tái)問我關(guān)于使用 js 開發(fā)后端服務(wù)的建議,我給推薦了這一個(gè)面向小白的走向全棧開發(fā)工程師的教程。

          關(guān)于這個(gè)全棧入門教程

          這是一個(gè)面向零基礎(chǔ)的基于 JavaScript 語(yǔ)言的全棧開發(fā)教程,教程基于目前流行的前后端分離開發(fā)模式,使用 Vue.js + Node.js 并且通過從實(shí)際需求的角度來(lái)完成基礎(chǔ)的業(yè)務(wù)代碼,沒有過多功能封裝,幾乎都是底層的代碼,通俗易懂,上手容易。

          教程截圖

          關(guān)于作者

          這套 JavaScript 全棧教程的作者是廖雪峰,是一位有著超過十年軟件開發(fā)經(jīng)驗(yàn)的大神,精通 Java / Python / Ruby / Visual Basic / Objective C 等,對(duì)開源框架有很深入的研究,著有《Spring 2.0核心技術(shù)與最佳實(shí)踐》一書,是很多后端開發(fā)工程師非常熟知的業(yè)內(nèi)大神。

          教程目錄

          因?yàn)獒槍?duì)的是對(duì) javascript 零基礎(chǔ)的小白用戶,因此這個(gè)教程有很大篇幅是 javascript 語(yǔ)言入門。

          • JavaScript簡(jiǎn)介
          • 快速入門
          • 函數(shù)
          • 標(biāo)準(zhǔn)對(duì)象
          • 面向?qū)ο缶幊?/span>
          • 瀏覽器
          • jQuery
          • 錯(cuò)誤處理
          • underscore
          • Node.js

          學(xué)習(xí)建議和感想

          這是我毫無(wú)后端開發(fā)經(jīng)驗(yàn)時(shí)學(xué)習(xí)后端開發(fā)的入門的教程,這套教程讓我學(xué)會(huì)了如何使用 javascript 來(lái)開發(fā)后端 api 接口。而且前面的基礎(chǔ)語(yǔ)法教程,也看得津津有味,復(fù)習(xí)了很多不會(huì)用、不常用但很巧妙的代碼實(shí)現(xiàn)。這是我推薦這個(gè)教程的最大原因。

          教程截圖

          這個(gè)教程除了適合零基礎(chǔ)的小白,我認(rèn)為這更像一個(gè)寫給后端開發(fā)者的、從其他后端語(yǔ)言轉(zhuǎn) javascript 的教程,如果像我之前學(xué)習(xí)的那樣沒有過后端開發(fā)經(jīng)驗(yàn),就需要注意幾個(gè)問題:

          • 教程涉及的代碼最后自己敲出來(lái)實(shí)現(xiàn)一遍,看懂并不代表會(huì)寫
          • 后端開發(fā)設(shè)計(jì)的基礎(chǔ)知識(shí)很多,建議提前了解數(shù)據(jù)庫(kù)、服務(wù)器基本知識(shí),學(xué)習(xí)起來(lái)會(huì)更順暢
          • 教程中很多關(guān)聯(lián)的代碼片段,拷貝出來(lái)配合流程圖來(lái)理解,會(huì)事半功倍

          入門靠老師,修行靠自己。總的來(lái)說(shuō),這只是一套非常基礎(chǔ)的入門教程,學(xué)完后能夠了解前端開發(fā)和后端開發(fā),可以實(shí)現(xiàn)簡(jiǎn)單的 demo,可以幫助我們學(xué)習(xí) koa / egg.js 這類基于 Node.js 的后端開發(fā)框架,但后端開發(fā)需要學(xué)習(xí)的知識(shí)很多,數(shù)據(jù)庫(kù)設(shè)計(jì)、查詢優(yōu)化、架構(gòu)設(shè)計(jì)等等,成為一個(gè)合格的全棧工程師,路還有很遠(yuǎn)。

          教程免費(fèi)學(xué)習(xí)說(shuō)明

          這是一個(gè)完全免費(fèi)的 JavaScript 全棧入門教程,就算完全不懂 js 也能快速入門,在線免費(fèi)學(xué)習(xí)。如果想學(xué) js 語(yǔ)法,也可以看看之前推薦過的阮一峰寫的免費(fèi) javascript 系統(tǒng)學(xué)習(xí)入門教程。

          最后祝各位有所收獲,邁進(jìn)全棧開發(fā)工程師行列。

          關(guān)注我,持續(xù)分享高質(zhì)量的免費(fèi)開源、免費(fèi)商用的資源。

          ↓↓點(diǎn)擊查看本次分享的網(wǎng)址。

          JavaScript 全棧開發(fā)入門 - 由廖雪峰提供的面向小白的免費(fèi)在線教程|那些免費(fèi)的磚

          avascript 的很多擴(kuò)展的特性是的它變得更加的犀利, 同時(shí)也給予程序員機(jī)會(huì)創(chuàng)建更漂亮并且更讓用戶喜歡的網(wǎng)站。

          盡管很多的開發(fā)人員都樂于頌揚(yáng) javascript,但是仍舊有人看到它的陰暗面。

          使用很多 javascript 代碼的 web 頁(yè)面會(huì)加載很慢,過多的使用 javascript 使得網(wǎng)頁(yè)丑陋和拖沓。很快如何有效地使用 javascript 成為一個(gè)非常火熱的話題。

          這里讓我們列出 10 個(gè)最佳 javascript 實(shí)踐,幫助你有效地使用 javascript。

          1、盡可能的保持代碼簡(jiǎn)潔

          可能大家都聽到過了N遍這個(gè)代碼簡(jiǎn)潔問題了。作為一個(gè)開發(fā)人員你可能在你的代碼開發(fā)過程中使用了很多次,但千萬(wàn)不要在 js 開發(fā)中忘記這點(diǎn)。

          • 盡量在開發(fā)模式中添加注釋和空格,這樣保持代碼的可讀性
          • 在發(fā)布到產(chǎn)品環(huán)境前請(qǐng)將空格和注釋都刪除,并且盡量縮寫變量和方法名
          • 使用第三方工具幫助你實(shí)現(xiàn)壓縮 javascript。

          2、思考后再修改 prototypes

          添加新的屬性到對(duì)象 prototype 中是導(dǎo)致腳本出錯(cuò)的常見原因。

          yourObject.prototype.anotherFunction = 'Hello';
          yourObject.prototype.anotherMethod = function(){...}
          

          在上面代碼中,所有的變量都會(huì)被影響,因?yàn)樗麄兌祭^承于 yourObject。這樣的使用會(huì)導(dǎo)致意想不到的行為。所以建議在使用完后刪除類似的修改。

          yourObject.prototype.anotherFunction = 'Hello'; 
          yourObject.prototype.anotherMethod = function () { … }; 
          test.anotherMethod();
          delete yourObject.prototype.anotherFunction = 'Hello';
          delete yourObject.prototype.anotherMethod = function () { … };
          

          3、Debug Javascript 代碼

          即使最好的開發(fā)人員都會(huì)犯錯(cuò)。為了最大化的減少類似錯(cuò)誤,請(qǐng)?jiān)谀愕?debugger 中運(yùn)行你的代碼,確認(rèn)你沒有遇到任何細(xì)微的錯(cuò)誤。

          4、避免 Eval

          你的 JS 在沒有 eval 方法的時(shí)候也可以很好的工作。eval 允許訪問 javascript 編譯器。如果一個(gè)字符串作為參數(shù)傳遞到 eval,那么它的結(jié)果可以被執(zhí)行。

          這會(huì)很大的降低代碼的性能。盡量避免在產(chǎn)品環(huán)境中使用 eval。

          5、 最小化 DOM 訪問

          DOM 是最復(fù)雜的 API,會(huì)使得代碼執(zhí)行過程變慢。有時(shí)候 web 頁(yè)面可能沒有加載或者加載不完整。最好避免 DOM。

          6、在使用 javascript 類庫(kù)之前先學(xué)習(xí) javascript

          互聯(lián)網(wǎng)充斥著很多的 javascript 類庫(kù),很多程序員都往往使用 js 類庫(kù)而不理解負(fù)面影響。強(qiáng)烈建議你在使用第三方類庫(kù)之前學(xué)習(xí)基本的 JS 代碼,否則,你就準(zhǔn)備著倒霉吧。

          7、不要用 “SetTimeOut” 和 “Setinterval” 方法來(lái)作為 “Eval” 的備選

          setTimeOut( "document.getID('value')", 3000);
          

          在以上代碼中 document.getID(‘value’) 在 setTimeOut 方法中被作為字符串來(lái)處理。 這類似于 eval 方法,在每個(gè)代碼執(zhí)行中來(lái)執(zhí)行一個(gè)字符串,因此會(huì)降低性能,因此,建議在這些方法中傳遞一個(gè)方法。

          setTimeOut(yourFunction, 3000);
          

          8、[] 比 new Array(); 更好

          一個(gè)常犯的錯(cuò)誤在于使用當(dāng)需要數(shù)組的時(shí)候使用一個(gè)對(duì)象或者該使用對(duì)象的時(shí)候使用一個(gè)數(shù)組。但是使用原則很簡(jiǎn)單:

          “當(dāng)屬性名稱是小的連續(xù)整數(shù),你應(yīng)該使用數(shù)組。否則,使用一個(gè)對(duì)象” – Douglas Crockford, JavaScript: Good Parts 的作者.

          建議:

          var a = ['1A','2B'];
          

          避免:

          var a = new Array();
          a[0] = "1A";
          a[1] = "2B";
          

          9、盡量不要多次使用 var

          在初始每一個(gè)變量的時(shí)候,程序員都習(xí)慣使用 var 關(guān)鍵字。相反,建議你使用逗號(hào)來(lái)避免多余的關(guān)鍵字,并且減少代碼體積。 如下:

          var variableOne = 'string 1',
           variableTwo = 'string 2',
           variableThree = 'string 3';
          

          10、不要忽略分號(hào) “;”

          這往往是大家花費(fèi)數(shù)個(gè)小時(shí)進(jìn)行 debug 的原因之一。

          今天就到這里啦,喜歡編程的小伙伴可以關(guān)注我哦!有學(xué)習(xí)方面的問題可以私信回復(fù):學(xué)習(xí)!


          主站蜘蛛池模板: 一区二区三区视频网站| 日韩精品午夜视频一区二区三区| 波多野结衣一区在线| 中文字幕一区在线| 国产色情一区二区三区在线播放 | 一区二区高清在线| 精品视频一区二区三区免费| 久久久久人妻一区精品性色av| 久久精品日韩一区国产二区 | 老熟妇仑乱一区二区视頻| 日本无码一区二区三区白峰美| 国产综合视频在线观看一区| 天堂Aⅴ无码一区二区三区| 亚洲美女视频一区二区三区| 国模视频一区二区| 久久高清一区二区三区| 无码视频一区二区三区| 中文字幕一区二区人妻| 国产精品日韩欧美一区二区三区| 久久精品国产一区二区| 久久毛片一区二区| 国产日韩一区二区三区在线观看| 欧美av色香蕉一区二区蜜桃小说| 中文字幕日韩一区二区三区不| 国产成人一区二区三中文| 国产在线视频一区二区三区98| 亚洲AV无码一区二区三区电影| 果冻传媒一区二区天美传媒| 亚洲欧美日韩中文字幕一区二区三区 | 亚洲AV综合色区无码一区爱AV| 日本免费一区尤物| 美女福利视频一区| 日韩精品一区二区午夜成人版| 亚欧免费视频一区二区三区| 一区二区三区在线| 在线观看中文字幕一区| 亚洲一区二区三区在线| 精品国产不卡一区二区三区| 在线免费视频一区二区| 一区二区三区在线观看| 人妻少妇久久中文字幕一区二区|