Ⅰ 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/