当前位置: 首页 > 编程日记 > 正文

windows下nodejs express安装及入门网站,视频资料,开源项目介绍

windows下nodejs express安装及入门网站,视频资料,开源项目介绍,pm2,supervisor,npm,Pomelo,Grunt安装使用注意事项等总结

第一步:下载安装文件
下载地址:官网http://www.nodejs.org/download/

第二步:安装nodejs
下载完成之后,双击 node-v0.12.7-x64.msi,开始安装nodejs,默认是安装在C:\Program Files\nodejs,可以修改到其他路径(如D:\nodejs)。
测试,进入cmd输入 node -v 查看nodejs的版本。输入 node -h 可以查看nodejs的帮助。node进入nodejs的命令行,两次Ctrl+c退出。
D:\nodejs>node -v
v0.12.7
D:\nodejs>node -h
Usage: node [options] [ -e script | script.js ] [arguments]

D:\nodejs>node
> console.log('Hello World!');
Hello World!
undefined
>
(^C again to quit)
>

第三步:安装相关环境
新版的nodejs集成了npm不需要另外下载安装了,打开安装目录看到(如:D:\nodejs\node_modules\npm),直接用npm安装相环境既可
可以使用cmd命令行输入"npm -v"来测试是否成功安装。
npm install -g express@3.5.0
npm install jade -g
npm install mysql -g

注意:直接通过npm install express -g 安装后,运行express提示" express"不是内部或外部命令,原因是版本问题,改成3.5.0即可运行。
安装其他组件,取决于环境搭建需求。

所有命令都是-g进行全局安装的,这样安装的安装包都在当前用户下,在磁盘的所有其他地方都可以访问到,比较方便。
代表安装到NODE_PATH的lib里面,而-d代表把相依性套件也一起安装。
如果沒有-g的话会安装目前所在的目录(会建立一个node_modules的文件夹),只能在当前目录下使用。默认情况下上述组件都是安装在C:\Program Files\nodejs\node_modules文件夹下 也是nodejs相关组件的自动查找路径。
全局安装在C:\Users\Administrator\AppData\Roaming\npm 目录下(Administrator为window用户目录)。

第四步:安装、测试 CoffeeScript
npm install coffee-script -g
确认安装的命令:coffee -v,出现版本号表示成功安装。
新建cs.js文件,输入(for语句下面的console.log 需要缩进,否则会报错):
for i in [0...3]
console.log "hello #{i}"
在该目录下运行"coffee cs.js" 输出:
D:\>coffee cs.js
hello 0
hello 1
hello 2

环境搭建完成。

第五步:创建一个express工程
(1).键入:express myapp (myapp是测试起的工程名称)
系统会自动创建一个 C:\Users\Administrator\myapp 目录,
包括:public routes views 三个文件夹,app.js package.json 两个文件
app.js: 项目入口,可以改成index.js或其他。相当于php项目中的 index.php、index.html
node_modules: 存放项目的依赖库
package.json: 项目依赖配置信息
public: 静态文件如 css,js,img (可以改成static,在入口js那里对应修改)
routes: URL路由文件
Views: 页面文件(Ejs或者jade的模板,默认是jade)

C:\Users\Administrator>express myapp

create : myapp
create : myapp/package.json
create : myapp/app.js
create : myapp/public
create : myapp/views
create : myapp/views/layout.jade
create : myapp/views/index.jade
create : myapp/routes
create : myapp/routes/index.js
create : myapp/routes/user.js
create : myapp/public/stylesheets
create : myapp/public/stylesheets/style.css
create : myapp/public/javascripts
create : myapp/public/images

install dependencies:
$ cd myapp && npm install

run the app:
$ node app

(2).C:\Users\Administrator\myapp>npm install
npm WARN deprecated static-favicon@1.0.0: use serve-favicon module
jade@1.11.0 node_modules\jade

(3).C:\Users\Administrator\myapp>node app
Express server listening on port 3000

(4).用浏览器打开地址:http://127.0.0.1:3000/
可以看到输出:Express Welcome to Express

(5).在myapp下(或其他目录都可以)新建 helloworld.js 代码如下(端口号可以自己定义不跟其他的冲突就可以):
var http = require("http");
http.createServer(function(request, response) {
response.writeHead(200, {"Content-Type": "text/plain"});
response.write("Hello World!");
response.end();
}).listen(8888);
console.log("nodejs start listen 8888 port!");

(6).cmd进入helloworld.js目录,输入:node helloworld.js
D:\nodejs\code>node helloworld.js
nodejs start listen 8888 port!

(7).用浏览器打开地址:http://127.0.0.1:8888/
可以看到输出:Hello World!

第六步:在项目中引用express包,在myapp目录下创建helloworld2.js文件内容如下:
var express = require('express');
var app = express();
app.get('/', function(req, res){
res.send('hello world2');
console.log('hello world2');
});
app.listen('8808');

如果没有安装过express,那么首先需要在当前项目文件夹下安装一个express
项目中引用的包,都会被安装到【node_modules】文件夹
或者拷贝全局组件C:\Users\Administrator\AppData\Roaming\npm\node_modules 目录到项目里。

D:\nodejs\code>node helloworld2.js
用浏览器打开地址:http://127.0.0.1:8808/
可以看到输出:hello world2


第七步:安装supervisor  
每次修改代码后会自动重启,省事省力的工具。
安装:npm install -g supervisor
运行方法,到项目目录下执行:supervisor app.js
C:\Users\Administrator>cd myapp
C:\Users\Administrator\myapp>supervisor app.js

测试:修改app.js 加上一句:console.log("use supervisor!");后在控制台输出:
crashing child
Starting child process with 'node app.js'
Express server listening on port 3000
use supervisor!

同样要启动其他js把node xxx.js 换成 supervisor xxx.js 如:
C:\Users\Administrator\myapp>supervisor helloworld2.js


第八步:安装 forever pm2进程管理器
安装:npm install -g forever
虚拟机一关node服务就关了,不过forever可以让node服务不停止,forever是一个简单的命令式nodejs的守护进程,能够启动,停止,重启App应用。
forever完全基于命令行操作,在forever进程之下,创建node的子进程,通过monitor监控node子进程的运行情况,一旦文件更新,或者进程挂掉,forever会自动重启node服务器,确保应用正常运行。

注:现在forever现在比较少人了,一般用pm2管理nodejs
pm2 是一个带有负载均衡功能的Node应用的进程管理器。当你要把你的独立代码利用全部的服务器上的所有CPU,并保证进程永远都活着,0秒的重载, PM2是完美的。
它非常适合IaaS结构,IaaS 基础架构即服务,例如亚马逊的AWS,IaaS对于不知道新推出的应用程序/网站会有多成功的创业公司来说非常有用。
用法。
注:pm2需要依赖包比较多,需要使用:-d 参数,直接使用npm install pm2 -g 命令会warn出错。

$ npm install pm2 -gd # 命令行安装 pm2
$ pm2 start app.js -i 2 #后台运行pm2,启动2个app.js
# 也可以把'max' 参数传递给 start
# 正确的进程数目依赖于Cpu的核心数目
C:\Users\Administrator\myapp>pm2 start app.js -i 2
[PM2][ERROR] Process 0 not found
[PM2] Process successfully started
Use `pm2 show <id|name>` to get more details about an app

$ pm2 start app.js --name my-api # 命名进程
$ pm2 list # 显示所有进程状态
$ pm2 monit # 监视所有进程
$ pm2 logs # 显示所有进程日志
$ pm2 stop all # 停止所有进程
$ pm2 restart all # 重启所有进程
$ pm2 reload all # 0秒停机重载进程 (用于 NETWORKED 进程)
$ pm2 stop 0 # 停止指定的进程
$ pm2 restart 0 # 重启指定的进程
$ pm2 startup # 产生 init 脚本 保持进程活着
$ pm2 web # 运行健壮的 computer API endpoint (http://localhost:9615)
$ pm2 delete 0 # 杀死指定的进程
$ pm2 delete all # 杀死全部进程

运行进程的不同方式:
$ pm2 start app.js -i max # 根据有效CPU数目启动最大进程数目
$ pm2 start app.js -i 3 # 启动3个进程
$ pm2 start app.js -x #用fork模式启动 app.js 而不是使用 cluster
$ pm2 start app.js -x -- -a 23 # 用fork模式启动 app.js 并且传递参数 (-a 23)
$ pm2 start app.js --name serverone # 启动一个进程并把它命名为 serverone
$ pm2 stop serverone # 停止 serverone 进程
$ pm2 start app.json # 启动进程, 在 app.json里设置选项
$ pm2 start app.js -i max -- -a 23 #在--之后给 app.js 传递参数
$ pm2 start app.js -i max -e err.log -o out.log # 启动 并 生成一个配置文件
你也可以执行用其他语言编写的app ( fork 模式):
$ pm2 start my-bash-script.sh -x --interpreter bash
$ pm2 start my-python-script.py -x --interpreter python

0秒停机重载:这项功能允许你重新载入代码而不用失去请求连接。
注意:仅能用于web应用,运行于 cluster 模式(默认模式)
$ pm2 reload all

第九步:安装 Grunt(一切都可自动化)
Grunt是Javascript任务运行器。为什么需要任务运行器?
对于需要反复重复的任务,例如压缩、编译、单元测试、代码检查等,自动化工具可以减轻你的劳动,简化你的工作。
为什么使用Grunt?
Grunt 有庞大的生态圈,并且每天都在增长。你可以自由地选择数以百计的插件,帮助你自动化地处理任务。
用Grunt构建现有项目
1:全局安装grunt命令:npm install -g grunt-cli
2:在项目的根目录下新建一个Gruntfile.js文件,该文件为grunt的配置、初始化文件。
3:在packaget.json文件的devDependencies项中,添加grunt核心依赖以及需要的插件依赖。
"devDependencies": {
"grunt": "^0.4.5"
}
注:如果不想手动添加这些依赖,可以直接cmd到项目根路径下运行:npm install grunt --save-dev
依赖会被自动写入package.json的devDependencies项中。

关于Gruntfile的编写规则,详细请查看,Gruntjs中文文档。
目前项目中用到的几个gruntplugin:
jshint: 用于对JS语法进行强制检查
csslint: 用于对css语法进行强制检查
uglify: 用于压缩项目文件
Gruntfile配置的写法非常灵活并且随意,支持对文件进行正则匹配等特性。

==============================================
国内nodejs的网站 http://www.cnodejs.org/
Node.js 新手入门 - CNode技术社区
https://cnodejs.org/getstart

Node.js 教程 | 菜鸟教程
http://www.runoob.com/nodejs/nodejs-tutorial.html

Node.js Frameworks
http://nodeframework.com/

简介 | PM2
http://wohugb.gitbooks.io/pm2/content/index.html

Uspcat NodeJS视频教程 - 爱酷学习网,免费高清视频教程在线观看
http://www.icoolxue.com/album/show/89

Node JS国外网站教学视频(共15课时)
http://edu.51cto.com/course/course_id-127.html

Pomelo:网易开源基于 Node.js 的游戏服务端框架 - 梦想天空(山边小溪) - 博客园
http://www.cnblogs.com/lhb25/archive/2012/12/02/pomelo-game-server-framewok-for-node-js.html

node.js+Express.js+Jade+MongoDB开发Web即时聊天系统视频教程下载-菊花侠-ITPUB博客
http://blog.itpub.net/29370928/viewspace-1259577/
基于node.js+Express.js+Jade+MongoDB开发Web即时聊天系统
http://pan.baidu.com/s/1pJHOYE3

使用Node.js完成的第一个项目的实践总结 - 曾健生的专栏 - 博客频道 - CSDN.NET
http://blog.csdn.net/newjueqi/article/details/21625493
yanghua/FixedAssetManager_Server · GitHub
https://github.com/yanghua/FixedAssetManager_Server

=========================================

Koa (koajs) -- 基于 Node.js 平台的下一代 web 开发框架 | Koajs 中文文档
http://koa.bootcss.com/

Koa首页、文档和下载 - Node.js 的 Web 框架 - 开源中国社区
http://www.oschina.net/p/koa

Koa 是下一代的 Node.js 的 Web 框架。由 Express 团队设计。旨在提供一个更小型、更富有表现力、更可靠的 Web 应用和 API 的开发基础。

Koa可以通过生成器摆脱回调,极大地改进错误处理。Koa核心不绑定任何中间件,但提供了优雅的一组可以快速和愉悦地编写服务器应用的方法。

不过目前使用express的项目比较多,资料比较多,入门还是学习express比较好。

转载于:https://www.cnblogs.com/zdz8207/p/nodejs_learn_note_1.html

相关文章:

python 之 pip、pypdf2 安装与卸载

pip是个啥&#xff1f; pip 是一个现代的&#xff0c;通用的 Python 包管理工具。提供了对 Python 包的查找、下载、安装、卸载的功能。 第一步&#xff1a;pip 下载&#xff1a;https://pypi.org/project/pip/#files 第二步&#xff1a;解压&#xff0c;进入目录python pip\pi…

eclipse 3.55安装j2ee开发工具

选择help--->install new software -->work width --选择下拉框选择要安装插件转载于:https://www.cnblogs.com/yjhrem/articles/2309602.html

mysql中没有内置函数_[mysql]MySQL中的内置函数

用在select 语句&#xff0c;以及子句where order by hacing 中 update delete函数中可以将字段名作为字段来用&#xff0c;变量的值就是这个列对应的每一行记录。一、字符串函数php中用到的函数&#xff0c;mysql中大部分也提供了1、CONCAT(”字符串”,字段&…

tiny210V2 Uboot kernel filesystem 烧写和启动

1.sd启动 将u-boot镜像写入SD卡 将SD卡通过读卡器接上电脑&#xff08;或直接插入笔记本卡槽&#xff09;&#xff0c;通过"cat /proc/partitions"找出SD卡对应的设备&#xff0c;我的设备节点是/dev/sdb.执行下面的命令$sudo dd iflagdsync oflagdsync iftiny210-ub…

Linux下Shell日期的格式

2019独角兽企业重金招聘Python工程师标准>>> 不管是哪种语言&#xff0c;日期/时间都是一个非常重要的值。比如我们保存日志的时候&#xff0c;往往是某个前缀再加上当前时间&#xff0c;这样日志文件名称就可以做到唯一。在Shell环境里&#xff0c;我们获取时间的命…

usaco 6.1

6.1.2 rectbarn 首先要注意空间的消耗,3000*3000 大概10m的样子(最多16m),只够开个char,本想套用big barn的dp方法,定义struct [i,j]{int l;int h}来表示以(i,j)为右上顶点的矩形,貌似这样会爆,只好考虑其它解法(参考wc2003王知昆的论文). 大概思路: 定义h[i,j],l[i,j],r[i,j]分…

docker mysql详解_Docker轻松入门(详解)

一 Docker简介Docker 是一个开源的应用容器引擎&#xff0c;基于 Go 语言 并遵从Apache2.0协议开源。Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中&#xff0c;然后发布到任何流行的 Linux 机器上&#xff0c;也可以实现虚拟化。容器是完全使用沙…

[恢]hdu 2014

2011-12-12 05:46:08 地址&#xff1a;http://acm.hdu.edu.cn/showproblem.php?pid2014 题意&#xff1a;中文题。 mark&#xff1a;wa了3次&#xff01;&#xff01;&#xff01;因为敲错变量&#xff01;&#xff01;&#xff01;min敲成了num&#xff0c;各种二。可能是困了…

java在继承中父类的成员变量是否会被子类所覆盖

假如 父类 int num 7&#xff1b;子类 int num 9&#xff1b;父类是否会被子类所覆盖? 给你看两个例子&#xff1a; 第一个例子&#xff1a; 第二个例子&#xff1a; 这两个例子的区别只有一句话 由此证明了子类从父类继承的时候 如果有同名的成员变量 默认情况下 父类的成…

长连接及在Node中的应用——HTTP/1.1 keep-alive

HTTP请求都要经过TCP三次握手建立连接&#xff0c;四次分手断开连&#xff0c;如果每个HTTP请求都要建立TCP连接的话是极其费时的&#xff0c;因此HTTP/1.1中浏览器默认开启了Connection: keep-alive。 请求头中的这个属性的作用可以在请求完成后&#xff0c;保持TCP连接一段时…

python 桑基图 地理坐标_【转载】Python数据可视化-实现Sankey桑基图

根据不完整统计&#xff0c;90%想用sankey图的朋友都是因为被它炫酷的外表所吸引&#xff0c;举个例子&#xff1a;在这里插入图片描述关于sankey图的定义是这样描述的&#xff1a;即桑基能量分流图&#xff0c;也叫桑基能量平衡图。它是一种特定类型的流程图&#xff0c;图中延…

[恢]hdu 2015

2011-12-14 05:49:09 地址&#xff1a;http://acm.hdu.edu.cn/showproblem.php?pid2015 题意&#xff1a;中文&#xff0c;忒麻烦了。 代码&#xff1a; # include <stdio.h>int main (){int n, m, flag ;int i, sum, cnt ;while (~scanf ("%d%d", &n, &a…

http://www.shanghaihaocong.com-WORDPRESS开发的企业主题站

wordpress是世界上使用最多的php开源博客系统&#xff0c;功能强大&#xff0c;而且拥有众多的插件&#xff0c;可扩展性强。 最近&#xff0c;我也用它做了一个企业网站&#xff0c;欢迎浏览&#xff1a;http://www.shanghaihaocong.com&#xff0c;上海灏璁实业有限公司转载于…

蓝桥杯 扑克序列(全排列)

扑克序列 A A 2 2 3 3 4 4&#xff0c; 一共4对扑克牌。请你把它们排成一行。要求&#xff1a;两个A中间有1张牌&#xff0c;两个2之间有2张牌&#xff0c;两个3之间有3张牌&#xff0c;两个4之间有4张牌。 请填写出所有符合要求的排列中&#xff0c;字典序最小的那个。 例如&a…

tensorflow with求导_3.4tensorflow2.x自动求导原理函数详解

自己开发了一个股票智能分析软件&#xff0c;功能很强大&#xff0c;需要的点击下面的链接获取&#xff1a;1.1 tensorflow2.x自动求导1.1.1 自动求导GradientTape类GradientTape的作用就是用于自动求导&#xff0c;需要有自变量x和因变量y&#xff0c;调用gradient(y…

WinRAR也能实现智能备份

日志 唐山郎&#xffe5; 一切随缘,顺其自然.加博友 关注他 最新日志 2012年意味着机会还是灾难墙壁网线插座的接法佛度有缘人我~想~你&#xff0c;但不。会找你asp.net"服务器应用程序不可超惊艳! 古装美女超精美剪辑该作者的其他文章 博主推荐 相关日志 随机阅读 首页推…

MediaCodeC解码视频指定帧,迅捷、精确

原创文章&#xff0c;转载请联系作者 若待明朝风雨过&#xff0c;人在天涯&#xff01;春在天涯 原文地址 提要 最近在整理硬编码MediaCodec相关的学习笔记&#xff0c;以及代码文档&#xff0c;分享出来以供参考。本人水平有限&#xff0c;项目难免有思虑不当之处&#xff0c;…

threejs 绘制球体_ThreeJs 绘制点、线、面

所有的三位物体都是由点构成&#xff0c;两点构成线&#xff0c;三点构成面&#xff0c;ThreeJs又如何绘制出点、线、面呢 &#xff1f;在ThreeJs中&#xff1a;模型由几何体和材质构成模型以何种形式(点、线、面)展示取决于渲染方式1. 几何体首先我们来创建一个自定义的几何体…

model多表操作

一. 创建模型 from django.db import models# Create your models here.#比较常用的作者信息放到这个表里面 class Author(models.Model): id models.AutoField(primary_keyTrue)namemodels.CharField(max_length32)agemodels.IntegerField()authorDetailmodels.OneToOneField…

cocos2d-x注意事项(十)Lua发展飞机战争-4-创建主角

二战中被称为二战飞机飞机&#xff0c;当然&#xff0c;以飞机作业。这是一个游戏&#xff0c;我们必须加入一个飞机——这是我们的英雄。 首先创建一个层&#xff08;PlaneLayer&#xff09;要显示飞机。然后&#xff0c;create飞机初始化方法 module("PlaneLayer",…

.PHONY makefile中的伪目标

拿clean举例&#xff0c;如果make完成后&#xff0c;自己另外定义一个名叫clean的文件&#xff0c;再执行make clean时&#xff0c;将不会执行rm命令。 为了避免出现这个问题&#xff0c;需要.PHONY: clean所谓伪目标就是这样一个目标&#xff0c;它不代表一个真正的文件名&…

jq父级绑定事件的意义_jq——事件

$(document),$(body)加载事件&#xff1a;$(document).ready(fn)$(document).ready(function(){ alert("这是加载事件"); });简写&#xff1a;$(function(){});工作中简写比较多js:window.οnlοadfn 把页面上的DOM和资源加载完成之后执行jq:$(document).ready(fn)…

美妆彩妆宣传PPT模板

还有四天就是三八妇女节了&#xff0c;相信有不少从事美妆美容行业的工作者也要开始对产品的一个宣传简介了&#xff0c;对外进行一番交流配上一份优秀的PPT模板是再好不过的了。今天办公资源要和大家分享的PPT模板是可用于美妆美容美发行业的工作策划&#xff0c;总结汇报等。…

报表性能优化方案之报表服务器优化基础讲解

内存 JVM堆栈内存是决定应用服务器性能的关键指标&#xff0c;一般服务器默认的内存配置都比较小&#xff0c;在较大型的应用项目中&#xff0c;这点内存是不够的&#xff0c;因此需要进行查看与修改Web服务器内存大小&#xff0c;接下来就介绍服务器内存查看的方法以及不同服务…

windows下git bash乱码问题

网上有很多相关资料&#xff0c;备份一下&#xff1a; 1,/etc/gitconfig&#xff1a;[gui] encoding utf-8 #代码库统一用urf-8,在git gui中可以正常显示中文[i18n] commitencoding GB2312 #log编码&#xff0c;window下默认gb2312,声明后发到服务器才不会乱码[svn] …

python tcp server分包_如何创建线程池来监听tcpserver包python

我试图创建线程池来同时对传入的tcp包执行一些操作。在我在python3中找不到任何内置线程池。我也读了一些关于multiprocessing.Pool的文章&#xff0c;但是它不支持内存共享。所以我使用Queue来模拟线程池。在为每个线程创建一个队列是否更好&#xff1f;有没有人有建议或更好的…

R语言 股价分析

首先判断股价的分布是不是正态分布: #获取3m公司收盘价 mmmdata read.csv("E:\\kuaipan\\A Introduction to Analysis of Financial Data with R\\chapter 1\\ch1data\\d-mmm-0111.txt",header T) mmmprice as.numeric(sapply(mmmdata, function(l){substring(l,1…

JavaのFile类基础操作之问题

在上一章节&#xff0c;介绍了File类的基础操作&#xff0c;比如文件的创建&#xff0c;文件的删除等等。这一章节&#xff0c;将介绍在File类基础操作中遇到的问题。 1.路径分割符问题 在实际的软件开发与运行过程中&#xff0c;往往都会在Windows环境下进行项目的开发&#x…

把时间当作朋友(第一版)笔记

平生第一次下载并阅读了电子版的关于学习类型的书籍&#xff0c;并且用软件&#xff08;MindManager)记录了读书摘要&#xff08;其实最多能叫摘录&#xff09;&#xff0c;不过也不妨碍我发篇随笔记录下。 平常&#xff0c;我更喜欢读纸质的书籍&#xff0c;用日志本记录笔记&…

python中执行linux命令(调用linux命令)_Python调用Linux bash命令

import subprocess as sup # 以下注释很多(为了自己以后不忘), 如果只是想在python中执行Linux命令, 看前5行就够了# 3.5版本之后官方推荐使用sup.run()sup.run("ls -l", shellTrue) # 如果参数args是字符串, shell要设置为Truesup.run(("ls", "-l&…