用ASP.NET MVC好多年了,还记得当初为MVC所倡导的"DRY"理念所感染,为Razor的简单而震撼。随着MVC的成熟反而让我觉得似乎渐渐地走入了微软营造的一种高技术的牢笼。 感觉MVC越来越也让人感觉笨重了似乎失去了以往的灵巧,有时候更有点像在用JAVA的感觉。在MVC4中还看到了MS加入的许多非C#传统的东东,例如OWIN吧,我承认是个好东西但却总是让人有一种不知到从哪里拿来硬用C#写出来的感觉。写个小小的Web就要配置一大堆的东东,安装老半天的环境,忍受IIS那吃货漫长的启动时间...

今天出于好奇拿起了Node.js,想看看这个近年炙手可热的东东究竟有什么厉害的地方, 没想到一下子就被她给吸引住了!有几点是最引诱我的:

  • 性能高,基于Google V8 引擎开发,以非阻塞式线程模型为基础。(稍试了一下,页面输出的时间与IIS相比的话那就是火箭与乌龟在赛跑了)
  • 完全模块化开发,模块之间的重用率很高。
  • 简单而且第三方资源极其丰富,很多MVC内的复杂功能只需要装一两个模块就能完成,内中还包括了不少由MS自己开发的模块,如 azure.
  • 基于javascript, 这意味着可以使用弱类型的语言开发可以省下很多在C#中很多的类型相关操作,而且可以任意地做Ioc想想这是多爽的事。而且一套代码写得好的话既可以运行于服务端也可以使用于客户端,那么对于客户端与服务端具有相同或类似业务处理逻辑的代码不就可以合为一体了吗?
  • 视图引擎众多,可以按自己的喜好简单地更换(感觉还是jade最为简结)

我在Window下安装过node.js的运行环境,但非常坑爹NPM经常出问题可能是权限的问题吧,总之用NPM安装很多常用包时都会出错。 但在Ubuntu下跑就没有这类问题发生,因为可以用sudo为NPM授权。在这里就分享一下建立NodeJS开发环境的一点小经验。

安装node.js

在Ubuntu下安装NodeJS非常简单,只需要在命令窗口键入以下命令即可:

sudo apt-get install python-software-properties
sudo add-apt-repository ppa:chris-lea/node.js
sudo apt-get update
sudo apt-get install nodejs npm

安装成功后就可以使用npm了。 这里是 node.js的模块库:https://www.npmjs.org/ 想安装什么模块就在这里找吧。

推荐必安的几个包

其它的先别管,先装了这几个做Web开发最有用的包。我会在下一篇文章内详细地介绍它们

sudo npm install express -g
sudo npm install jade -g
sudo npm install body-parser -g
sudo npm install moment -g
sudo npm install express -g
sudo npm install bower -g
sudo npm install mongooes -g
sudo npm install grunt -g
sudo npm install less-middleware -g
sudo npm install nunit -g

开发环境

我在Ubuntu 也是菜鸟一名,对于node.js更是小白,于是google了一下看看大家都在用什么来开发 node.js. 很多人推荐使用sublime作为开发工具,由于长期使用VS.net个人感觉sublime非常的不好用,虽说他的插件极多但要配一个Debug
环境就是一件痛苦的事。最后还是选了WebStorm,这个工具是一个用java开发的集成IDE对node.js, less的支持非常好。WebStorm 自带的javascript 分析做得比VS.NET的要好多了,还可以分析出javascript文件的类结构树!(VS.NET至今一至都没有的功能). 到 http://www.jetbrains.com/webstorm/ 下载到本地解开包就可以用了,没有什么特别的安装过程,唯一感觉坑爹的就是要用命令行启动webstorm。

sudo sh /[webstorm安装目录]/bin/webstore.sh

Webstorm可以直接创建一个Node express的网站模板:

WebStorm可以带有很多插件库

WebStorm的调试器也很不错,与VS.net这种顶级IDE相比也毫不逊色。有一点小小的优点就是在这里你很容易就会完全使用TTD,每个文件都可以轻易地运行或是调试的(这就是javascript的好处之一),测试文件也不会被编译到项目内,这样一来测试就非常容易做也非常容易管理。

对于使用过VS.NET做前端的朋友可能都会觉得VS.NET的javascript 编辑很坑爹,对javascript类和方法的detect,outline等这些重要功能与C#编辑器相比就是粗制滥造!当我们的类一多,类浏览器的重要性就尤为突出,现在在WebStorm中构造你项目的类结构时就会大大不同了!

js类浏览器

js方法关系Detection

这些小功能确实是很赞,很实用。在实际开发中是很给力的。

小结

对开发环境的搭建与IDE环境的简单介绍就到这,如果有朋友发现比WebStorm更好用的IDE for node.js 的也请不吝给我留言。

在接下来的文章中我会一步一步地介绍更多与node相关的内容。

新的旅程:NodeJS - 环境篇的更多相关文章

  1. nodejs 基础篇整合

    nodeJs 基础篇整合 最近有朋友也想学习nodeJs相关方面的知识,如果你是后端想接近前端,node作为一门跑在服务端的JS语言从这里入门再好不过了.如果你正好喜欢前端,想走的更高,走的更远.no ...

  2. Javascript的二进制数据处理学习 ——nodejs环境和浏览器环境分别分析

    以前用JavaScript主要是处理常规的数字.字符串.数组对象等数据,基本没有试过用JavaScript处理二进制数据块,最近的项目中涉及到这方面的东西,就花一段时间学了下这方面的API,在此总结一 ...

  3. NodeJS项目迁移兼Ubuntu下NodeJS环境部署

    前言 之前做的几个项目都托管在阿里云服务器,但是最近要到期了.想着到底要不要续期,毕竟100/月.后面看着阿里云有个活动,800/三年.果断买下.环境部署折腾了一天,其中也遇到几个坑. 目录 一.安装 ...

  4. 在阿里云 ECS 搭建 nginx https nodejs 环境(二、https)

    在阿里云 ECS 搭建 nginx https nodejs 环境(二) 这次主要内容是 如何在 ubuntu 的nginx 下配置 二级域名. 一. 域名解析 首先你需要去到你的 域名服务商那边 进 ...

  5. nodejs环境 + 入门 + 博客搭建

    NodeJS:NodeJS是一个使用了Google高性能V8 引擎 的服务器端JavaScript实现.它提供了一个(几乎)完全非阻塞I/O栈,与JavaScript提供的闭包和匿名函数相结合,使之成 ...

  6. 阿里云服务器(ECS)从购买到配置NodeJS环境

    本人入门级前端,对服务器不熟悉,这是自己摸索的过程,可能会有错误! 1.购买 阿里云服务器有个活动是新用户前六个月可以免费试用,但是每天早上发放一定的名额,但为了方便,我买了18RMB的捆绑套餐,也是 ...

  7. linux -- ubuntu搭建nodejs环境

    需求:在web端做一个实时性功能比较强的模块, 客户端:用websocket 服务端:node.js node.js介绍:node.js天生就是一个高效的服务端语言,可以直接使用 javascript ...

  8. ElementUI入门和NodeJS环境搭建

    1. ElementUI简介 我们学习VUE,知道它的核心思想式组件和数据驱动,但是每一个组件都需要自己编写模板,样式,添加事件,数据等是非常麻烦的,   所以饿了吗推出了基于VUE2.0的组件库,它 ...

  9. 运用NodeJs环境并依赖第三方库,框架等实现网站前后端分离报错问题及处理方法

    运用NodeJs环境并依赖第三方库,框架等实现网站前后端分离报错问题及处理方法 问题一: SyntaxError: missing ) after argument list in .....\vie ...

随机推荐

  1. c# 通过GroupBy 进行分组

    有时候我们需要数据根据一些字段进行分组,这时候用orderBy很方便.不多说了.直接上代码: class Ma { public int number { get; set; } public str ...

  2. 如何从 Windows 虚拟机分离数据磁盘

    当不再需要附加到虚拟机的数据磁盘时,可以轻松地分离它. 这会从虚拟机中删除该磁盘,但不会从存储中删除它. Warning 如果用户分离磁盘,它不会自动删除. 如果订阅了高级存储,则将继续承担该磁盘的存 ...

  3. Css基础笔记(部分)

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  4. 【Alpha Go】Day 1 !

    [Alpha Go]Day 1 ! Part 0 · 简要目录 Part 1 · 任务分配 Part 2 · 他日安排 Part 3 · 预期任务量 Part 4 · 团队贡献值计算原则 Part 1 ...

  5. JAVA随机数之多种方法从给定范围内随机N个不重复数

    一.JAVA中生成随机数的方式 1.在j2se中使用Math.random()令系统随机选取一个0~1之间的double类型小数,将其乘以一个数,比如25,就能得到一个0~25范围内的随机数,这个在j ...

  6. Django商城项目笔记No.13用户部分-用户中心个人信息

    首先处理个人信息的显示 邮箱绑定: 首先给用户的模型类里添加一个字段来说明用户的邮箱是否激活 然后数据库迁移 python manage.py makemigrations python manage ...

  7. FastDFS分布文件系统Java客户端使用

    原文链接:http://blog.csdn.net/xyang81/article/details/52847311 Java客户端源代码和jar:链接:http://pan.baidu.com/s/ ...

  8. 常用npm 命令

    npm 官方网站:npm的使用说明   安装模块 npm install 安装当前目录package.json文件中配置的dependencies模块   安装本地的模块文件 npm install ...

  9. python面试题(一)

    1.通过代码实现如下转换: 二进制转换成十进制:v = “0b1111011” #先将其转换为字符串,再使用int函数,指定进制转换为十进制. print(int("0b1111011&qu ...

  10. (排序算法整理)NEFU 30/32

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/caihongshijie6/article/details/26165093        事实上, ...