Ⅰ Nodejs有沒有最佳實踐
肯定有最佳實踐:一樓說的MEAN(MongoDB,Express,AngularJS,NodeJS) MEAN.io - A Fullstack javascript Framework 就是,當然橘逗逗這是從技術層面上看的。
從產品角度上看目前也有很多在使用NodeJS的,我們的產品 Worktile 其實就是MEAN架構的,其他的產品參見: Node.js 都應用在什麼項目上?這些項目為什圓賣么選擇 Node.js?
1. 選擇NodeJS,基本上MVC框架都會選擇Express
2. 至於資料庫和前端使用什麼是另外一回事。NoSql,關系型資料庫都可以,取決於你的需求,當然NodeJS天生的就和Mongo最匹配
3. RESTfull API 不是具體的技術,只是一種架構設計規則
4. Nginx 是HTTP和反向代理伺服器,實現負載均衡等作用的,貌似和NodeJS沒有什麼直接的關系吧
5. 題主發的鏈接是介紹AngularJS的,AngularJS是前指逗端的MV* JS框架
Ⅱ AngularJS和jquery,有什麼區別
作為一個快速、簡潔的JavaScript框架,是繼Prototype之後又一個優秀的JavaScript代碼庫(或JavaScript框架)。其強大的兼容性,獨特的鏈式語法和短小清晰的多功能介面為我們平常的開發工作帶來了不少的幫助。
在今年的3月16,我們也迎來了jQuery 3.2.0(jQuery 3.2.0 Is Out!)。此版本包括一些錯誤修復,改進和一些棄用,如果從 jQuery 3.0+升級,應該不會存在兼容性問題。如果尚未升級到 jQuery 3+,請去查閱「3.0升級指南」。
這次更新中值得關注的更新:
1.支持自定義CSS屬性添加
2.棄用jQuery.holdReady
3.棄用jQuery.nodeName
4.棄用jQuery.inArray
5.修復了.width()和.height()中存在的一個bug 。例如,transform: scale(2x)時,元素的高寬值不應該翻倍。
6.支持將
Ⅲ 如何選擇Node.js Web開發框架
Node.js非常適用於Web開發,但是現在無論是一個網站,還是Web App都已經成為包括很多不同部分,如前端、資料庫、業務模塊、功能模塊等等的大型項目,使用Node.js從零開始進行Web開發,也許大中型團隊能夠 勝任,但對於個人和小型團隊來說是不現實的。這時候框架就成為Web開發利器,對於個人開發來說幾乎是必不可少。那麼如何選擇Node.js Web開發框架呢?
首先,我們必須要弄清楚的是,我們需要的是——
程序 or 框架?
程序是已經成型的應用,你需要的是為它搭建環境、添加配置,然後就可以運行起來;框架則是應用的骨架,你需要為它添加數據模型、業務邏輯,它才能成為應用,開始提供服務。
事實上,對於Web開發來說,程序和框架的區別正越來越模糊,比如幾乎婦孺皆知的Wordpress,它是一個博客程序,但它豐富的插件以及高度的 自定義能夠支持很大程度上的二次開發,在這點上它比起一些PHP框架也並不遜色。我個人認為,如果重心在於提供服務而不是掌握技術,有WordPress 這樣的程序是沒有必要使用框架的。
可惜的是,由於Nodejs還很年輕,目前還沒有WordPress這樣的程序,因此目前在Node.js開發里,如果想做出自己想要的作品,框架是必然的選擇。如果是某些特定類型的應用,可以嘗試一些開源的程序,比如要用Nodejs做博客,有Hexo、Ghost等。
Node.js Web框架有哪些?
Node.js里的Web框架分為API框架和Web應用框架。前者能夠開發出RESTful的API,後者也能開發出RESTful API,但還包括模板、渲染等為前端所准備的功能。
API框架的使用場景是為跨平台應用提供統一的數據模型,而渲染由前端/客戶端自行解決。目前比較知名的API框架有
restify(文檔、Github、NPM)
ActionHero.js(官網、Github、NPM)
LoopBack(官網、Github、NPM)
Frisby(官網、Github、NPM)
Fortune.js(官網、Github、NPM)
Web應用框架顧名思義,就是為了打造Web應用所開發的框架。這里有兩種風格的Web應用框架。
一個是Sinatra風格,另一個是Rails風格。Sinatra和Rails都是Ruby語言的Web框架,後者的影響力更大也更為知名。這里簡單的解釋一下兩種風格是什麼意思。
Sinatra風格是指高度可配置,注重開發的自由度。代表性的Nodejs Web框架有:
Express(官網、Github、NPM)TJ大神開發,Node.js官方推薦
hapi(官網、Github、NPM)
koa.js(官網、Github、NPM)
flaliron(官網、Github、NPM)
total.js(官網、Github、NPM)
locomotive(官網、Github、NPM)
Rails風格則是指不重復自己和約定優於配置,以及嚴格遵循MVC結構開發。代表性的框架有:
Sails.js(官網、Github、NPM)
geddy(官網、Github、NPM)
CompoundJS(官網、Github、NPM) 原railswayjs
這兩種風格無所謂誰優誰劣,全憑使用者的偏好。
而在這兩種Web框架之外,還有更大型的框架,即全棧框架,其中的代表是MEAN。
MEAN?
MEAN指MongoDB+Express+Angular.js+Node.js,這一組合包括運行環境、資料庫、Web框架和前端引擎。被稱為 全棧框架(Full-stack framework)。這其中除了Node.js之外,每一個都是可替換的,目標是創建從前端到後端,全部使用javascript的Web應用。
由於這一框架的完善性,有人將其稱為LAMP的接班人。LAMP即PHP的典型運行環境,Linux+Apache+MySql+PHP,被大量的用於各種虛擬主機上。
MEAN看似龐大,但事實上要構建完整的現代化Web應用,特別是SPA(單頁面應用),這幾個組件都是難以缺少的,並且,其中每一項幾乎都是目前 情況下的最佳選擇,因此用於學習和重頭開始打造新的Web應用是非常合適的。但由於實際業務的獨特性,很可能要替換其中的組件,比如用Mysql來替換 MongoDB,因此,學習其中的原理和架構,打造自己的類MEAN框架也是一種選擇。
作為個人和小團隊來說,全棧框架MEAN基本上足夠了,但目前大多數全棧框架還包含一項特性,那就是實時,擁有實時功能的框架我們又稱為實時框架。
實時框架好嗎?
實時框架(Real-time framework)指包含了webSocket的雙向通信功能,能夠在伺服器和客戶端做到實時通信的框架。
服務端和客戶端自由通信的需求一直都在,但由於HTTP協議本身的局限性,因此催生了Comet等變通的方法,但即使這樣也離實時相距甚遠。而當 Node.js興起後,另一個HTML5技術webSocket也漸漸成熟,人們突然發現,實時通信一下子變得觸手可及,於是webSocket技術在 Node.js中得到大量的應用,其中最為知名的模塊就是socket.io,而各種全棧框架也紛紛加入實時特性來應對更廣闊的開發需求。
目前有代表性的實時框架有:
Meteor(官網、Github、NPM)
MEAN.io(官網、Github、NPM)
Derby(官網、Github、NPM)
SocketStream(官網、Github、NPM)
不過說實話,目前能看到的實時通信的應用場景其實不多,其中大多集中於聊天室、to-do、實時圖表、在線游戲等領域。其他領域使用實時特性不但沒必要,而且是對伺服器資源的浪費。因此目前是否要採用實時框架,要看具體的項目而定。
以上基本就是Node.js Web框架的現狀了,相信看到這里,對於選擇何種框架讀者已經心裡有數了吧。最後再介紹一個容易搞混的概念,和解釋一下我的選擇。
YEOMAN?
第一次見到這個詞,我還以為它和MEAN有什麼聯系。事實上,它們是截然不同的兩個東西。YEOMAN由YO(腳手架)、grunt(構建工具)、bower(包管理器),它代表的是一種工作流,與框架開發的思維方式完全不同。具體的介紹可見這里。
YEOMAN能夠和框架達到類似的目的,都是為構建一個Web應用做好准備,但是要不要採用YEOMAN,則是見仁見智。我個人的看法是,學習 YEOMAN本身就需要不少時間,並且有一定的學習門檻。至少在目前,使用框架開發還是相對經濟的,而如果以後YEOMAN這種模式推廣開來,再來學習也 不遲,更何況有一定的Node.js項目經驗之後再來學習YEOMAN要輕松很多。
事實上,我還是很認可YEOMAN這種Generator+package Manager的模式的,這是因為Node.js本身崇尚微模塊的 概念,即無論是多麼小的功能,都將它們模塊化,甚至大的模塊也要拆分成小的模塊,然後通過搭積木的方式來構建應用。這樣能夠徹底的解耦,對於不容易調試的 Javascript來說,也有助於定位和修復應用中的問題。Generator就是這種理念催生下的產物,通過選擇不同的配置和選項,將積木搭起來。不 過對於這種模式目前大家也還處於實驗當中,不急於進行實際應用。
Ⅳ JS 的時間格式
一直被各種時間格式困擾,所以這次來總結一下常用的時間格式到底有哪些,它們之間如何互相轉換。
ISO Date "2015-03-25" 國際標准
Short Date "03/25/2015"
Long Date "Mar 25 2015" 或者 "25 Mar 2015"
Full Date "Wednesday March 25 2015"
new Date();方法可以將前四種時間格式當做參數,輸出 UTC 格式的時間
UTC "2015-03-25T12:00:00" 看到日期和時間中間有一個字母 T 表示為 UTC 時間 是 現在使用的標准時間
UTC 是時間標准;ISO-8601 是表示時間的一種標准格式
ISO-8601 的具體日期的時間表示法,在 UTC 時間後加 Z,如 "2015-03-25T12:00:00Z",Z 表示是通用標准,其它的時區的時間和 UTC 不同,所以用實際時間加時差表示。
GMT Greenwich Mean Time "Mon Feb 13 08:00:00 GMT+08:00 2012" 中間有 GMT+ 字樣
UTC(Universal Time Coordinated 原子鍾提供)和 GMT (Greenwich Mean Time 格林尼治時間)一樣
EDT (US)Eastern Daylight Time 東部夏令時
CDT (US) Central Daylight Time 中部夏令時
MDT (US)Mountain Daylight Time 山地夏令時
PDT (US) Pacific Daylight Time 太平洋夏令時
EST (US) Eastern Standard Time 東部標准時間
CST "Web Mar 25 2015 08:00:00 GMT+0800" 中部標准時間
MST (US) Mountain Standard Time 山地標准時間
PST (US) Pacific Standard Time 太平洋標准時間
設置時間時,沒有指定 time zone,js 將會使用瀏覽器的 time zone
獲取時間時,沒有指定 time zone,結果將會轉換成瀏覽器的 time zone
總之,如果時間是用 GMT 時間創建,如果瀏覽器 from central US 時間將會被轉換成 CDT。
涉及到格式類型:UTC,GMT,unix timestamp
Ⅳ 用js求一組數的平均數、期望、方差,用js自帶的Math對象能做嗎
JavaScript趣題:計算方內差容
varvariance=function(numbers){
varmean=0;
varsum=0;
for(vari=0;i<numbers.length;i++){
sum+=numbers[i];
}
mean=sum/numbers.length;
sum=0;
for(vari=0;i<numbers.length;i++){
sum+=Math.pow(numbers[i]-mean,2);
}
returnsum/numbers.length;
};
Ⅵ 什麼是MEAN全堆棧javascript開發框架
MEAN.js 是一種基於nodejs的web開發框悉清好架, 類似ruby的rails;python的django;
之所以說是fullstack(全堆棧)是指它很全能 -- 利用它可以容易的集成 nodejs(webserver), mongo-db(資料庫), angularjs(正扒前端MVVM)
更詳細的睜鉛內容移步官方網站 http://meanjs.org/