如何使用express搭建一个网站
首先安装express模块,cd到文件夹中,使用npm install express命令安装express module后,会发现文件夹中多了node_modules目录,里边会有express模块了。
进入到任意一个文件夹,执行express app命令,就会创建一个app的应用项目,结构如下:
E:\nodejs\express_demoexpress app
create : app
create : app/package.json
create : app/app.js
create : app/public
create : app/bin
create : app/bin/www
create : app/public/stylesheets
create : app/public/stylesheets/style.css
create : app/views
create : app/views/index.jade
create : app/views/layout.jade
create : app/views/error.jade
create : app/public/images
create : app/routes
create : app/routes/index.js
create : app/routes/users.js
create : app/public/javascripts
install dependencies: (这里指示安装必备的包)
$ cd app npm install
run the app: (这里指示执行,使用npm start)
$ DEBUG=app ./bin/www
使用express搭建第一个Web应用【Node.js初学】
cd进入app文氏启件夹中,执行app,使用命令node app这时候会报错,因为第一次使用express框架做核明的话,缺少很多必备的modules
报错:
module.js:340
throw err;
^
Error: Cannot find module 'serve-favicon'//表示缺少serve-favicon模块
at Function.Module._resolveFilename (module.js:338:15)
at Function.Module._load (module.js:280:25)
at Module.require (module.js:364:17)
at require (module.js:380:17)
at Object.anonymous (E:\nodejs\Node.js寮€鍙戝疄鎴榎chapter_two\express_dem
o\app\app.js:3:15)
at Module._compile (module.js:456:26)
at Object.Module._extensions..js (module.js:474:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Function.Module.runMain (module.js:497:10)
使用express搭建第一个Web应用【Node.js初学】
这个时候根据提示,安装必备的modules就可以了,如图
Your environment has been set up for using Node.js 0.10.26 (ia32) and npm.
C:\Users\Administratore:
E:\cd nodejs
E:\nodejsnpm install serve-favicon
serve-favicon@2.2.0 node_modules\serve-favicon
├── ms@0.7.0
├── parseurl@1.3.0
├─纯告─ fresh@0.2.4
└── etag@1.5.1 (crc@3.2.1)
E:\nodejsnpm install morgan
morgan@1.5.1 node_modules\morgan
├── basic-auth@1.0.0
├── depd@1.0.0
├── debug@2.1.1 (ms@0.6.2)
└── on-finished@2.2.0 (ee-first@1.1.0)
E:\nodejsnpm install cookie-parser
cookie-parser@1.3.3 node_modules\cookie-parser
└── cookie-signature@1.0.5
E:\nodejsnpm install body-parser
body-parser@1.12.0 node_modules\body-parser
├── content-type@1.0.1
├── raw-body@1.3.3
├── bytes@1.0.0
├── depd@1.0.0
├── qs@2.3.3
├── iconv-lite@0.4.7
├── on-finished@2.2.0 (ee-first@1.1.0)
├── debug@2.1.1 (ms@0.6.2)
└── type-is@1.6.0 (media-typer@0.3.0, mime-types@2.0.9)
E:\nodejs
使用express搭建第一个Web应用【Node.js初学】
安装完成所有必备的modules后,在此执行app,项目根目录下npm start命令,如果还是提示类似Error: Cannot find module 'jade'错误的话,继续安装必备的模块
使用express搭建第一个Web应用【Node.js初学】
以上所有的一切完成后,在浏览器下输入,如下图就表示成功了。
使用express搭建第一个Web应用【Node.js初学】
如何使用nodejs搭建开发环境
1.安装NodeJS
1.编译环境
源代码编译器,通常 Unix/Linux平台都自带了C++的编译器(GCC/G++)。如果没有,请通禅含过当前发行版的软件包安装工具安装make,g++这些编译工具。
Debian/Ubuntu下的工具是apt-get
RedHat/centOS下通过yum命令
Mac OS X下你可能需要安装xcode来获得编译器
2.网络加密
其次,如果你计划在Node.js中启用网络加密,OpenSSL的加密库也是必须的。该加密库是libssl-dev,贺孝笑可以通过apt-get install libssl-dev等命令安装。
3.手动编译
wget
tar zxvf node-v0.6.1.tar.gz
cd node-v0.10.26
./configure
上面几行命令是通过wget命令下载最新版本的代码,并解压之。./configure命令将会检查环境是否符合Nodejs的编译需要。
make
make install
2.安装NPM
1.NPM的全称是Node Package Manager, 是NodeJs的第三方安装库。
curl | sh
curl 是通过curl命令获取这个安装shell脚本,按后通过管道符| 将获取的脚本交由sh命令来执行。
2.更改第三方库
npm install underscore
underscore@1.2.2 ./node_modules/underscore
由于一些特殊的网络环境,直接通过npm install命令安装第三方库的时候,经常会出现卡死的状态。幸运的是国内CNode社区的@fire9 同学利用空余时间搭建了一个镜像的NPM资源库,服务器架设在日本,可以绕过某些不必要的网络问题。你可以通过以下这条命令来安装第三方库:
npm --registry "
如果你想将它设为默认的资源库,运行下面这条命令即可:
npm config set registry " "
通过npm安装包。安装好之後会自动被安装到 /usr/local/bin 目录下,而相依的函式库也会自动安装到 /usr/local/lib/node 目录下,实在是非常方便。
3.安装NodeJS调试环境
1.用npm命令安装全慎乎局模式的 node-inspector组件
sudo npm install -g node-inspector
2.更改端口
修改 node-inspector/lib/config.js的端口
’web-port’: {
desc: ‘Port to host the inspector’,
convert: conversions.stringToInt,
defaultValue: 6868
},
3.使用
node-inspector启动一个调试工具
在chrome浏览器中输入打开chrome的调试模式
使用node debug调试nodeJS项目
node --debug-brk=5858 read.js
可以在chrome中查看到调试信息
4.使用Sublime构建NodeJS
设置Sublime的Builder-
Tools - Build System - New Build System
将如下代码写入
{
“cmd”: ["/usr/local/bin/node", “$file”],
“file_regex”: “^[ ]File "(…?)”, line ([0-9]*)",
“selector”: “source.javascript”
}
保存为NodeJs.sublime-build文件
如此可以直接使用Com+B来使用nodejs运行程序
node.js能开发大型网站吗?
大型的公司都是采用了多种编程语言
例如阿里它就是采用了jsp和nodejs(当然我就了解到后端里面它用着这俩至于还有没有其他的我不清楚了)jsp稳定性很强大java诞生了好多年了哪尺稳定性没得说袜衫但是java的性能讲真不如nodejs的i/告缓腔0处理方面强大如果淘宝并发的话那nodejs就会很大的提升访问速度
如何设计一个基于Node.js和Express的网站架构
推荐使用Webstorm打开项目。打开项目后,代码结构如下图所示:
在主体结构中从上到下介绍。 app 文件夹包含了所有后端代码; build 文件夹中包含了最新数据库备份; config 包含有网站整体的配置; logs 文件夹包含网站后端记录的日志文件; node_modules 是包含所有的 node.js 依赖包(源代码中初始没有此文件夹,运行 npm install 命令后所有加载的依赖包放置在此文件夹中); public文件夹包含了所有的前端代码,包括JavaScript、less、图片、Webfont等; .bowerrc中定义了 bower 管理前端库的下载地址; bower.json 则配置了项目需要的前端库;.jshintre-client 和 .jshintrc-server 分别为前后端JavaScript代码规范检查规则;.travis.yml 为[travis](travis-ci.org/)自动编译配置; app.js 为node.js启动脚本文件; build.sh 为单独编写的自动发布bash命令;gruntfile.js为 grunt 配置文件;newrelic.js为 newrelic 的配置文件,用于监控网站性能; package.json 包含了所有node.js依赖包配置。
项目后端结构
项目后端代码架构如下图租轿所示:
主要分为两大部分: app 和 config 。 app 里面按照职责不同来分类,每个脚本文件对应于不同的模块; api 文件夹包含了所有api对应的业务逻辑代码, helper 放置一些公用方法,如邮件发送、日志记录、数据库连接等等; templates 放置的是静态邮件模板; views 是后端页面模板,使用了 handlebar 模板引擎,其中 http 中放置系统错误显示页面, layouts 放置模板页; routes 是 express 对应的路由配置,所有的页面和API的路由配置都在这个文件中。 config 文件夹中为系统配置,按照不同环境分为开发和现场两个环境配置, all.js 放置共通配置, development.js 放置开发环境对应配置而 production.js 放置线上环境配置。配置内容包括邮件发送、数据库连接及一些第三方API所需的key等等。
项目弊蚂肆前端结构
项目前端代码结构如下所示:
前端代码全部放置于 public 文件夹下。 data 目录包含一些静态json格式数据,后期可能会考虑放到数据库中。 helper 中是浏览器下载引导页面; images 包含了所有项目中用到的图片,我们尽量使用第三方的图片服务器保存图片,一些小图标也尽量使用webfont。 JavaScripts 文件夹包含所有JavaScript文件,其中 app 子目录放置业务代码,业务代码都是按照业务不同封装成了不同的 angularjs controller; debug 子目录放置调试用代码,而 libs 方式前端JavaScript库,项目中使用得JavaScript库有angularjs 、 jQuery 及一些插件; clients.js 是所有ajax请求函数; erealm.js 是angularjs的主模块; language.js 包含了所有多语言配置,目前支持中英文。stylesheets 包含了所有的css样式及webfont,除了第三方库之外,自定义的样式全部使用了 less 。作为一种惯例,项目中添加了 humans.txt 文件,表明项目的作者信息。有关humans.txt,可以参考官方网站 humans.txt 。
自动化构建工具
项目自动化构建使用 grunt 。grunt的使用涉及开发、调试、发布阶段。开发阶段使用了图片压缩和前端代码格式美化,使用的工具是 imagemin 和 jsbeautifier ,运行grunt prepare 命令。调试阶段使用了代码规范检查、less编译、自动添加浏览器前缀、自动加载运行nodejs并打开浏览器、实时监控代码变化物行并刷新页面等。开发中,使用 grunt 命令即可,为默认grunt命令。发布阶段包含了JavaScript及css合并压缩,并在文件路径上添加哈希值来避免浏览器缓存问题,同时删除开发环境中使用的代码,使用 grunt build 命令即可把代码切换为发布环境。
具体的使用grunt方法及相关工具的介绍,后期会有专门的技术文章讲解,这里不会详细设计技术细节。
后期持续的改进点
项目完成的比较仓促,但是我们尽量保持代码的整洁和可维护性,一些编码方式也借鉴当前流行的最佳实践。但理想是美好的,现实总是不会做到那么完美,需要不断的完善。目前存在的问题是后端代码结构不够清晰、整体代码中无用代码还没有来得及移除。框架上期望把 jQuery 去掉,只使用 Angularjs ,目前只做到了尽量不用jQuery 中的方法。小图标的使用上 Bootstrap 和 Font Awesome 重复,后期会逐步删除 Font Awesome 而只使用 Bootstrap 中带的小图标。目前,最大的问题是项目没有完整的自动化测试,这个后期会逐步添加。
总结
以上是这个开源项目的整体技术结构介绍。在这个项目中,我们会持续使用最流行的Web技术,希望得到大家的持续关注,如果有开发者能一块贡献一些代码,我们将会非常高兴。我们已经在github.io上构建了一个技术平台来发布Web技术文章,网址是blog.erealm.cn。博客网址也同样开源,使用了 Jekyll 构建。 Jekyll 非常强大,最大的特点是使用markdown格式来发布文章。博客的代码在这里: github 。
我们做这个开源的项目的目的有两个,其一是通过这个项目来展示我们做Web项目的实力,及培养团队技术水平。其二是借助这个项目,能和同行们有个技术上的互动和交流。如果我们的项目能让一些新手们学到一些做Web项目的经验,我们就很知足了。技术是不断革新的,而国内Web技术向来是落后于国外好几年,这个是不争的事实。我们erealm团队乐意为国内Web贡献自己的力量,也欢迎国内同行们和我们交流Web开发经验。
node.js适合做什么网站
NodeJS的特点:
它扰败灶是一个Javascript运行环境
依赖于Chrome V8引擎进行代码解释
事件驱动
非阻塞I/O
轻量、可伸缩,适于实时数据交互应用
单进程,单线程
NodeJS的缺点:
1. 不适合CPU密集型应用;CPU密集型应用给Node带来的挑战主要是:由于JavaScript单线程的原因,如果有长时间运行的计算(比如大循环),将会导致CPU时间片不能释放,使得后续I/O无法发起;
解决方案:缓扮分解大型运算任务为多个小任务,使得运算能够适时释放,不阻塞I/O调用的发起;
2. 只支持单核CPU,不能充分利枯举用CPU
3. 可靠性低,一旦代码某个环节崩溃,整个系统都崩溃
原因:单进程,单线程
解决方案:
(1)Nnigx反向代理,负载均衡,开多个进程,绑定多个端口;
(2)开多个进程监听同一个端口,使用cluster模块;
4. 开源组件库质量参差不齐,更新快,向下不兼容
5. Debug不方便,错误没有stack trace
NodeJS的应用场景:
实时应用:如在线聊天,实时通知推送等等(如socket.io)
分布式应用:通过高效的并行I/O使用已有的数据
工具类应用:海量的工具,小到前端压缩部署(如grunt),大到桌面图形界面应用程序
游戏类应用:游戏领域对实时和并发有很高的要求(如网易的pomelo框架)
NodeJS不适合场景:
CPU使用率较重、IO使用率较轻的应用——如视频编码、人工智能等,Node.js的优势无法发挥简单Web应用——此类应用的特点是,流量低、物理架构简单,Node.js无法提供像Ruby的Rails或者Python的Django这样强大的框架
如何用自己的电脑搭建web服务器
如何用自己的电脑搭建web服务器
这个可以直接百度搜索就有的。第一条经验里面就有里面内容很详细。搭建的时候。要看清楚自己的电脑是什么系统。XP和WIN7的系统是有不同步骤的。
参考资料::jingyan.baidu./article/9f63fb91d583b7c8400f0eef.
如何利用自己的电脑搭建WEB服务器
如何利用自己的电脑搭建WEB服务器?有各种方法,现在总结如下:
一、apache
1,下载wamp(windows+apache+mysql+php)环境安装包,解压到本地,就可以本地搭建web网站了,不过这种方法要求对代码和apache比较精通。
2,下载phpstudy环境安装包,解压到本地,这个环境适合学习及本地测试,操作非常小白,界面式操作。
3,下载upupw适配安装包,这个也是界面式的,可以选择IIS、APACHE、KANGLE等各种环境。
二、IIS
目前windows7以上版本的系统,都支持IIS7.0。操作步骤比较繁琐。
如何用自己的电脑搭建web服务器,让外网的用户访问
1、建议使用虚拟机,选择好你需要的平台,在机子上装好系统,以及对应的web服务端,然后在你的路由器上做好端口映射。
2、你要有个公网IP,如果没有固定IP的话,可以用动态域名还做。
1.咱们先假定是固定IP的,如何域名解析?(我在局域网中用静态IP,是固定的)
2.动态IP又如何域名解析?
3.自己的家的电脑想试试,还有就是学校的一台电脑服务器也想试试
如何搭建自己的Web服务器
安装护卫神.主机大师,一键安装web环境,支持IIS+ASP+ASP.+PHP+FTP+MYSQL+主机系统
如何用自己的电脑做一个WEB服务器
服务器具备的条件是24小时开机,因为要向外开放网络。web的话就必须搭建相应的环境,比如你制作的网站是asp环境就必须宴昌搭建asp环境的,还有php,jps等等,根据自己的需求安装环境,还有其他的web应用。搭建网站的条件是1.域名(等等)2.服务器(自己电脑,或者购买服务器)3.脚本(aspaspxphpjsp等等)为了防止别人入侵你的网站你可以安装相应的软件来防止别人入侵你的网站比如:安全宝,安全狗。
xp用户请下载iis for xp 的压缩包。百度一下即可
一、IIS的添加
请进入“控制面板”,依次选“添加/删除程序→添加/删除Windows组件”,将“Inter信息服务(IIS)”前的小钩去掉(如有),重新勾选中后按提示操作即可完成IIS组件的添加。用这种方法添加的IIS组件中将包括Web、FTP、NNTP和SMTP等全部四项服务。
二、IIS的运行
当IIS添加成功之后,再进入“开始→程序→管理工具→Inter服务管理器”以打开IIS管理器,对于有“已停止”字样的服务,均在其上单击右键,选“启动”来开启。
三、建立第一个Web站点
比如本机的IP地址为192.168.0.1,自己的网页放在D:\Wy目录下,网页的首页文件名为Index.htm,现在想根据这些建立好自己的Web服务器。
对于此Web站点,我们可以用现有的“默认Web站点”来做相应的修改后,就可以轻松实现。请先在“默认Web站点”上单击右键,选“属性”,以进入名为“默认Web站点属性”设置界面。
1.修改绑定的IP地址:转到“Web站点”窗口,再在“IP地址”后的下拉菜单中选择所需用到的本机IP地址“192.168.0.1”。
2.修改主目录:转到“主目录坦蔽”窗口,再在“本地路径”输入(或用“浏览”按钮选择)好自己网页所在的“D:\Wy”目录。
3.添加首页文件名:转到“文档”窗口,再按“添加”按钮,根据提示在“默认文档名”后输入自己网页的首页文件名“Index.htm”。
4.添加虚拟目录:比如你的主目录在“D:\Wy”下,而你想输入“192.168.0.1/test”的格式就可调出“E:\All”中的网页文件,这里面的“test”就是虚拟目录。请在“默认Web站点”上单击右键,选“新建→虚拟目录”,依次在“别名”处输入“test”,在“目录”处输入“E:\All”后再按提示操作即可添加成功让祥州。
5.效果的测试:打开IE浏览器,在地址栏输入“192.168.0.1”之后再按回车键,此时就能够调出你自己网页的首页,则说明设置成功!
四、添加更多的Web站点
1.多个IP对应多个Web站点
如果本机已绑定了多个IP地址,想利用不同的IP地址得出不同的Web页面,则只需在“默认Web站点”处单击右键,选“新建→站点”,然后根据提示在“说明”处输入任意用于说明它的内容(比如为“我的第二个Web站点”)、在“输入Web站点使用的IP地址”的下拉菜单处选中需给它绑定的IP地址即可(如图1);当建立好此Web站点之后,再按上步的方法进行相应设置。
如何在自己的电脑上搭建web服务器
常见的Web服务器有IIS,d和tomcat。Httpd和tomcat只需要下载只需要下载二进制包,解压,从解压目录的bin目录下运行d.exe或者startup.bat启动即可。tomcat运行在java环境下,启动之前还需要安装java的jdk运行环境。另外,IIS自带在微软的Visual studio工具包里,安装好以后可以通过控制面板里面的安装或关闭windows功能添加启动服务。网络上都有相关安装教程,可以参阅。
如何用nodejs搭建web服务器
用nodejs搭建web服务器方法:
引入需要用到的几个模块:
协议模块
var = require('');
url解析模块
var url = require('url');
文件系统模块
var fs = require("fs");
路径解析模块
var path = require("path");
创建服务并在指定的端口监听:
创建一个服务
var Server = .createServer(this.processRequest.bind(this));
在指定的端口监听服务
Server.listen(port,function(){
console.log("[HttpServer][Start]","runing at :"+ip+":"+port+"/");
console.timeEnd("[HttpServer][Start]");
});
在创建服务的时候需要传递一个匿名函数processRequest 对请求进行处理,processRequest接收2个参数,分别是request和response, request对象中包含了请求的所有内容,response是用来设置响应头以及对客户端做出响应操作。
processRequest:function(request,response){
var hasExt = true;
var requestUrl = request.url;
var pathName = url.parse(requestUrl).pathname;
对请求的路径进行解码,防止中文乱码
pathName = decodeURI(pathName);
如果路径中没有扩展名
if(path.extname(pathName) === ''){
如果不是以/结尾的,加/并作301重定向
if (pathName.charAt(pathName.length-1) != "/"){
pathName += "/";
var redirect = ":"+request.headers.host + pathName;
response.writeHead(301, {
location:redirect
});
response.end();
}
添加默认的访问页面,但这个页面不一定存在,后面会处理
pathName += "index.";
hasExt = false; 标记默认页面是程序自动添加的
}
获取资源文件的相对路径
var filePath = path.join("/webroot",pathName);
获取对应文件的文档类型
var contentType = this.getContentType(filePath);
如果文件名存在
fs.exists(filePath,function(exists){
if(exists){
response.writeHead(200, {"content-type":contentType});
var stream = fs.createReadStream(filePath,{flags:"r",encoding:null});
stream.on("error", function() {
response.writeHead(500,{"content-type": "text/"});
response.end("h1500 Server Error/h1");
});
返回文件内容
stream.pipe(response);
}else { 文件名不存在的情况
if(hasExt){
如果这个文件不是程序自动添加的,直接返回404
response.writeHead(404, {"content-type": "text/"});
response.end("h1404 Not Found/h1");
}else {
如果文件是程序自动添加的且不存在,则表示用户希望访问的是该目录下的文件列表
var = "headmeta charset='utf-8'/head";
try{
用户访问目录
var filedir = filePath.substring(0,filePath.lastIndexOf('\\'));
获取用户访问路径下的文件列表
var files = fs.readdirSync(filedir);
将访问路径下的所以文件一一列举出来,并添加超链接,以便用户进一步访问
for(var i in files){
var filename = files[i];
+= "diva href='"+filename+"'"+filename+"/a/div";
}
}catch (e){
+= "h1您访问的目录不存在/h1"
}
response.writeHead(200, {"content-type": "text/"});
response.end();
}
}
});
},