开启第一个Node.js的Express项目
手动创建一个Express.js的应用可大致分为以下步骤:
1.创建文件夹
a. 创建一个项目根文件夹,如helloWord
b.在项目的根目录下创建项目的目录结构,依次创建{public,public/css,public/img,public/js,db,views,views/includes,routes}
可使用命令:
mkdir {public,public/css,public/img,public/js,db,views,views/includes,routes}
2.NPM初始化和配置package.json
a.进入控制台,进入项目的根目录
b.输入命令:npm init ,然后输入相关的一些参数,name,version,等可参考下面的package.json 文件
c.使用命令:npm install express@4.1.2 --save
3.依赖声明
由于express.js是约定优于配置,也可直接在package.json中输入如下内容,然后运行npm install即可
{
"name": "helloworld",
"version": "0.0.1",
"description": "\"\"",
"main": "app.js",
"scripts": {
"start": "node app.js"
},
"author": "",
"license": "ISC",
"dependencies": {
"express": "4.1.2",
"jade":"1.3.1",
"mongoskin":"1.4.1",
"stylus":"0.44.0"
}
}
4.app.js项目启动文件配置
在根目录下创建项目起始文件app.js,打开app.js并编辑
对于app.js的配置文件主要涉及以下几个步骤:
1)引入依赖,
//依赖引入
var express = require('express');
var http = require('http');
var path = require('path');
2)设置相关配置
//实例化Express.js
var app = express();
//配置port、views、views engine
app.set('port',process.env.PORT || 3000);
app.set('views',path.join(__dirname,'views'));//这里的__dirname的下划线是两个英文下划线
app.set('view engine','jade');
3)连接数据库(可选)
4)定义中间件
5)定义路由
//定义路由
app.all('/',function(req,res){
res.render('index',{msg:'Welcome to the practical Node.js!'});
});
app.get('/about',function(req,res){
res.end('about us');
});
6)创建服务
//创建服务
http.createServer(app).listen(
app.get('port'),function (){
console.log('Express.js server listening on port '+app.get('port'));
}
);
开启服务之前,需要先在views文件夹中创建一个index.jade,代码如下:
h1 hello
p= msg
7)开启服务
在命令行输入:node app.js并在浏览器中输入http://localhost:3000/会得到:
在浏览器中输入http://localhost:3000/about会得到:
5.结合jade
6.运行项目
开启第一个Node.js的Express项目的更多相关文章
- Node.js基于Express框架搭建一个简单的注册登录Web功能
这个小应用使用到了node.js bootstrap express 以及数据库的操作 :使用mongoose对象模型来操作 mongodb 如果没了解过的可以先去基本了解一下相关概念~ 首先注 ...
- 如何设计一个基于Node.js和Express的网站架构?
前言 今年七月份,我和几个小伙伴们合伙建立了一个开发团队.业务开展如火如荼的同时,团队宣传就提上了日程,所以迫切需要搭建公司网站出来.确定目标后我们就开始考虑如果构建一个企业网站.先是进行业内调查,看 ...
- 如何快速搭建一个 Node.JS 项目并进入开发?
了解:如何快速搭建一个项目并进入开发? 在此不概述 Node.JS 的历史以及发展过程. 因为之前接触过通过 Java 开发语言,所以明确地知道一个服务器所需的文件,以及一个服务器所需要的操作. 那么 ...
- Node.js、express、mongodb 入门(基于easyui datagrid增删改查)
前言 从在本机(win8.1)环境安装相关环境到做完这个demo大概不到两周时间,刚开始只是在本机安装环境并没有敲个Demo,从周末开始断断续续的想写一个,按照惯性思维就写一个增删改查吧,一方面是体验 ...
- Node.js与Sails~项目结构与Mvc实现
回到目录 Sails是一个Node.js的中间件架构,帮助我们很方便的构建WEB应用程序,网址:http://www.sailsjs.org/,它主要是在Express框架的基础上发展起来的,扩展了新 ...
- 运行第一个Node.js程序
初学Node.js,萌新一枚.感觉Node.js挺不错的,从基础开始一步一步来,加油吧! 我们来使用Node.js的express来运行第一个程序helloworld: 在命令提示符键入express ...
- Node.js系列-express(上)
前言 Node.js系列的第一篇:http,大概描述了通过使用node.js内置的api创建一个服务并监听request实现简单的增删改查.现在,我们就通过通读express官网及使用express框 ...
- node.js使用express框架进行文件上传
关于node.js使用express框架进行文件上传,主要来自于最近对Settings-Sync插件做的研究.目前的研究算是取得的比较好的进展.Settings-Sync中通过快捷键上传文件,其实主要 ...
- Code Your First API With Node.js and Express: Set Up the Server
How to Set Up an Express API Server in Node.js In the previous tutorial, we learned what the REST ar ...
随机推荐
- Java集合框架(二)—— HashSet、LinkedHashSet、TreeSet和EnumSet
Set接口 前面已经简绍过Set集合,它类似于一个罐子,一旦把对象'丢进'Set集合,集合里多个对象之间没有明显的顺序.Set集合与Collection基本上完全一样,它没有提供任何额外的方法. Se ...
- Tensorflow中实现BN为什么需要加入这个额外依赖?见CS231N作业源码
batch normalization in tensorflow requires this extra dependency 为什么加上这两句? extra_update_ops = tf.get ...
- UVA - 1631 Locker 记忆化搜索
题意:给定两个密码串,每次可以让1~3个相邻的密码向上或者向下滚动,每个密码是 ,问最少需要多少次滚动可以让原串成为目标串? 思路:假设当前要让第i位密码还原,我们可以同时转动,不同的转动方式会影响后 ...
- HDU - 3038 种类并查集
思路:种类并查集的每个节点应该保存它的父节点以及他和父节点之间的关系.假设root表示根结点,sum[i-1]表示i到根结点的和,那么sum[j-1] - sum[i]可以得到区间[j, i]的和.那 ...
- 如何解决使用Gradle时出现的jar包冲突
前言 在我之前使用Gradle的博文中已经提到,Gradle对依赖的管理是比较智能的,如果有两个包依赖于相同的包,而版本不同的时候,Gradle会进行自动的选择,从而避免jar包的冲突. 也就是说,在 ...
- hadoop性能调优
1.平衡磁盘利用率 hadoop balancer -Threshold 20 或者 sh $HADOOP_HOME/bin/start-balancer.sh –t 20% 参数20是比例参数,表示 ...
- Android JNI的Android.mk文件语法详解
Android.mk简介: Android.mk文件用来告知NDK Build 系统关于Source的信息. Android.mk将是GNU Makefile的一部分,且将被Build System解 ...
- configure: error: xml2-config not found. Please check your libxml2 installation
安装php时的报错 checking libxml2 install dir... nochecking for xml2-config path... configure: error: xml2- ...
- linux内核initrd文件自定义方法
linux内核initrd文件自定义方法 重新编译内核后,可能加入了自定义的模块,就有可能需要修改init文件,而init文件就在initrd中,这里记录下操作步骤,以防遗忘. 1. cp /bo ...
- C#抽象类应用实例
abstract修饰符可以和类.方法.属性.索引器及事件一起使用,在类声明中使用abstract修饰符以表明这个类只能是其他类的基类. 抽象类的特性 (1)抽象类不能被实例化 (2)抽象类可以包含抽象 ...