nodejs入门

摘要:
Express是nodejs的流行web应用程序框架。

目录:

一、关于nodejs

  Node.js (http://nodejs.org/)是一个基于Chrome JavaScript 运行时建立的一个平台, 用来方便地搭建快速的, 易于扩展的网络应用。Node.js 借助事件驱动, 非阻塞 I/O 模型变得轻量和高效, 非常适合 run across distributed devices 的 data-intensive 的实时应用。

  express(http://expressjs.com/)应用于nodejs的一个很火的web应用框架。

  npm(https://www.npmjs.org/)nodejs包管理器。

二、nodejs案例开发完整流程

  此案例主要是调用百度地图api实现一个基于当前坐标的周边生活搜索和交通导航。

1、用到的开发环境:

os:windows7(x64)

软件:mongodb(v2.6.0)、nodejs(v0.10.26)、npm(v1.2.19)、 express(v3.5.0)

2、完整流程

 2.1、在win7下安装运行mongodb

  2.1.1、下载mongodb

  通过网址https://www.mongodb.org/dr//fastdl.mongodb.org/win32/mongodb-win32-x86_64-2008plus-2.6.0.zip/download下载mongodb,然后解压。

  程序文件都在bin目录中,bin目录主要包括如下几个程序:

  1. mongo.exe,命令行客户端工具。
  2. mongod.exe,数据库服务程序。
  3. mongodump.exe,数据库备份程序。
  4. mongoexport.exe,数据导出工具。
  5. mongofiles.exe,GridFS工具。
  6. mongoimport.exe,数据导入工具。
  7. mongorestore.exe,数据库恢复工具。
  8. mongos.exe,貌似是性能检测工具。

  2.1.2、设置mongodb目录和数据文件路径

  将其解压到 e:,再重命名为mongodb,路径为e:mongodb;在e:mongodb路径下新建一个data文件夹,在data文件夹中新建db文件夹,路径e:mongodbdatadb。

  2.1.3、启动mongodb

  进入cmd提示符控制台,输入命令E:mongodbinmongod.exe --dbpath=e:mongodbdatadb

 2.2、下载安装nodejs

  2.2.1、点击http://nodejs.org/download/下载.exe的nodejs安装文件。

  2.2.2、在e:创建文件夹nodejs,然后将下载的node.exe文件放入e: odejs路径下,并在系统环境变量Path中加入“E: odejs;” 便于在任意位置执行node应用。

 2.3、下载安装npm

  2.3.1、在https://github.com/isaacs/npm/tags中下载相应的npm zip包

  2.3.2、在e:新建npmjs文件夹,将npm源代码解压到e: pmjs目录中。

  在命令提示符窗口中执行下面的操作,完成npm的安装:

cd e: pmjs

node cli.js install -gf

  另外:

node cli.js install npm -gf //可以安装最新版的NPM
node cli.js install npm@1.0.105 -gf //可以安装指定版本的NPM

  2.3.3、NPM安装完成后,将"e: odejs ode_modules"加入系统环境变量NODE_PATH中。

 2.4、安装express

在命令提示符窗口中执行 npm install express -g //全局安装最新版express

 2.5、创建nodejs工程目录并创建一个nodejs示例项目

  在e:下创建nodejsworkspaceproject,进入工程目录使用express创建一个使用默认模板引擎的nodejs项目:

cd e: odejsworkspaceprojcet

express node-demo

nodejs入门第1张

 根据提示,下载该项目的依赖包

nodejs入门第2张

 示例项目建立成功,启动示例项目

E:
odejsworkspaceproject
ode-demo>node app.js

nodejs入门第3张

   本地的3000端口被打开,通过浏览器访问: localhost:3000。通过node启动程序,每次代码修改都需要重新启动。 有一个工具supervisor,每次修改代码后会自动重启,会为我们开发省很多的时间。

  通过npm安装supervisor

  npm install supervisor

  再次启动项目:

  supervisor app.js

nodejs入门第4张

3、示例项目的改进

  通过 express -e nodejs-demo 创建支持ejs模板的nodejs项目:

nodejs入门第5张

3.1、目录结构:
nodejs入门第6张
node_modules, 存放所本项目的所有依赖库
package.json,项目依赖配置及开发者信息
app.js,程序启动文件
public,静态文件(css,js,img)
routes,路由文件(MVC中的C,controller)
Views,页面文件(Ejs模板)

3.2、ejs模板的使用
让ejs模板文件使用扩展名为html的文件。
修改app.js文件:

app.engine('.html', require('ejs').__express);
app.set('view engine', 'html');
//app.set('view engine', 'ejs');

 3.3、然后将项目中view文件夹中的所有以.ejs为后缀的文件另成为以.html为后缀的文件,另存为时编码格式必须为utf-8(否则启动工程以后,凡是含有中文的页面都会出现乱码)!!!

 3.4、nodejs项目中的路由功能

  3.4.1、在app.js文件中进行工程的路由配置:

  类似的语句如下:

var routes = require('./routes');

var user = require('./routes/user');

var blog = require('./routes/blog');

var interface = require('./routes/interface');

app.get('/', routes.index);

app.all('/login', notAuthentication);
app.get('/login', routes.login);

app.get('/users', user.list);

app.get('/blog', blog.index);
app.get('/lbs', interface.index );
app.get('/lbs/k/:keyword', interface.keyword );
app.get('/lbs/c/:coord', interface.coord );
app.get('/lbs/ip',interface.ip);

app.get('/lbs/init/lng/:lng/lat/:lat',interface.initl);

app.get('/lbs/init/word/:word',interface.initw);

注:get为get请求,post为post请求,all为所有针对这个路径的请求

  3.4.2、然后打开routes/index.js文件,增加对应的方法:

exports.index = function (req, res) {
res.render('index', {
title: 'Index of Baidumap'
});
};


exports.login = function (req, res) {
if(req.session.uer){
return res.redirect('/home');
}
else{
res.render('login', { title: '用户登陆'});
}
};

  综合3.4.1和3.4.2来看,可以这么理解,当我们通过浏览器访问http://localhost:3000/时,实际是通过app.js文件中的app.get('/', routes.index)语句定位到了routes/index.js文件中的exports.index语句,此时服务器就向客户端传回了views文件夹下的index.html页面。

 3.5、功能模块的介绍

  3.5.1、登录模块

  登录模块中的功能主要是,在数据存储方面通过mongodb实现本web应用中session数据的存储。

  3.5.2、调用百度地图api实现当前坐标的周边搜索和公交导航功能

  1、百度地图API(http://developer.baidu.com/map/)

  百度地图JavaScript API是一套由JavaScript语言编写的应用程序接口,可帮助我们在网站中构建功能丰富、交互性强的地图应用。

  2、实现该功能的大致流程是通过给定的地址解析地址对应的经纬度坐标,然后在经纬度坐标出添加覆盖物类:图像标注,给图像标注添加click事件监听函数,在点击目标图像标注时生成当前地址对应的SearchInfoWindow信息窗口工具。而后就可以通过此信息窗口工具搜索当前地址周边的生活娱乐场所,同时也提供搜索当前地址到目标地址的交通导航方案。实现此功能时主要用到的百度地图api如下:

  1、Web服务API>Geocoding API  

  2、JavaScript API>类参考 Class:覆盖物类/Marker

  3、JavaScript API>开发指南>工具>SearchInfoWindow

注:百度地图API中的工具类已经被制作成开源库(lib)对外免费开放,可直接访问JavaScript 开源库。若功能模块中使用了工具类,则需要确认已在开发工程中引入lib文件,具体引用方法可查看JavaScript 开源库提供的示例源文件。注意,开源库必须与百度地图JS API同时使用。

三、nodejs相关知识的学习 

1、nodejs支持的模板

  主要是ejs和jade(调侃下,本田有款车也叫jade,呵呵),其中jade是nodejs的默认模板。这两个模板个人学习运用的都还不够深入,所以只能在网上找找其他大牛的使用感受(至于对与错还需要进一步的验证):

  一个node官方的主流template engine的对比说明:http://paularmstrong.github.io/node-templates/

  如何选择 EJS 和 Jade?:http://www.zhihu.com/question/20355486

2、jade模板的学习

  jade模板的语法规范初看起来不大适应,但学习起来还是比较好上手的。jade官网中提供了调用jade模板的方法和jade的详细api说明:http://jade-lang.com/api/

3、下面是笔者学习nodejs开发的第一个web应用和网上一些较好的nodejs web应用的地址

 3.1、 https://github.com/peiyu420/baidumapAPI

 3.2、 https://github.com/peiyu420/hackathon-starter

 3.3、 http://blog.fens.me/series-nodejs/

免责声明:文章转载自《nodejs入门》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇获取一个数组中相同的属性的对象数组iOS宏定义的使用与规范下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

应用性能监控(二)

Zipkin 是一款开源的分布式实时数据追踪系统(Distributed Tracking System),基于 Google Dapper 的论文设计而来,由 Twitter公司开发贡献。其主要功能是聚集来自各个异构系统的实时监控数据,用来追踪微服务架构下的系统延时问题。应用系统需要进行装备(instrument)以向 Zipkin 报告数据。Zipki...

Nodejs mysql 数据库增、删、改、查 操作

Nodejs mysql的增、删、改、查操作 Nodejs连接mysql的增、删、改、查操作(转载 自:http://blog.sina.com.cn/s/blog_5a6efa330102vctw.html) 一、准备 nodejs的教程,大多以操作mongodb为示例。但是mongodb有一些局限性,具体官网上有说。我打算用MySQL,因为多少还有...

Python引用模块和查找模块路径

模块间相互独立相互引用是任何一种编程语言的基础能力。对于“模块”这个词在各种编程语言中或许是不同的,但我们可以简单认为一个程序文件是一个模块,文件里包含了类或者方法的定义。对于编译型的语言,比如C#中的一个.cs文件,Java中的一个.java或者编译后的.class文件可以认为是一个模块(但常常不表述为模块);对于解释型的语言会更加直观些,比如PHP的....

alpha项目展示

【软工小白菜】alpha项目展示 一、团队简介 姓名 帅气的个人照 个人介绍 定位 博客地址 祝世雷 会一点c/c++, java,python,6系菜鸡,喜欢被带飞的感觉 开发/测试 链接 陈卓 接触过c/c++/c#,java,会一点点python。希望组里的大佬们可以带飞我 开发/测试 链接 赵博名 6系菜鸡,虽然有3年编程经历...

vue项目中安装cnpm和node_modules

1.安装cnpm的nodejs包管理工具,命令行: npm install -g cnpm --registry=https://registry.npm.taobao.org   2. 每个vue项目需要配置自己单独的node_modules模块,具体构建过程如下: step1: cd到你的项目根目录下 step1: 执行 “cnpm insta...

centos 7 部署 yapi

yapi是高效、易用、功能强大的API管理平台,旨在为开发、产品、测试人员提供更优雅的接口管理服务 部署环境要求: 1)nodejs(7.6+) 2)mongodb(2.6+) 一、安装nodejs  1、首先安装wget  yum install -y wget 如果已经安装了可以跳过该步, -y 参数代表跳过询问 2、下载nodejs最新的bin包 下...