NodeJS+Express如何新建一个自己需要的项目(入门)

基本知识

Node JS是单线程应用程序,但它通过事件和回调的概念,支持并发;
NodeJS的每一个API都是异步的,作为一个单独的线程,它使用异步函数调用来维护并发;
Node使用观察者模式;
Node线程保持一个事件循环,每当任何任务完成后得到结果,它触发通知事件侦听函数来执行相应的事件;
Node.js = 运行环境+ JavaScript库

npm 节点程序包管理器;
	命令行实用程序安装包,作为Node.js版本管理和依赖包管理;
	npm --version; B版本
	npm ls/nmp ls -g;列表
	npm install modulename; 本地模式安装某一个模块,
	npm install modulename - g;全局模式安装某一个模块
	npm uninstall modulename;卸载模块
	var express = require('express');引用模块
	npm update;当Package.json变化时进行更新
	npm search modulename;搜索模块
	npm init;初始化模块,生成package.json

package.json
	是存在于任何Node应用程序/模块的根目录,并用于定义一个包的属性;
	name - 包的名称
	version - 包的版本
	description - 包的描述
	homepage - 包的网站主页
	uthor - 包的作者
	contributors - 包的贡献者的名称列表
	dependencies - 依赖性列表。
		npm自动安装所有在node_module文件夹中的包提到的依赖关系。
	repository - 包的存储库类型和URL
	main - 包的入口点
	keywords - 关键字;

Express 概述
	用于创建Node JS的Web应用程序非常流行的Web应用程序框架;
	安装Express :npm install express -g	查看npm ls -g;
	安装Express生成器:
		express生成器用于使用express命令创建应用程序框架;
		npm install express-generator -g
	利用express初始化一个应用程序
		express firstApplication
		再该目录下安装所有依赖  npm install/npm i

项目搭建

开发环境准备

nodejs环境搭建:
	官网下载:https://nodejs.org/en/download/,安装
	node --version 或者node -v查看nodejs版本
	node 检查是否安装成功
express环境搭建
	使用npm install express -g 安装express
	使用npm install express-generator -g安装Express生成器
	通过nmp ls -g 查看express是否安装成功

构建简单项目

打开终端,创建一个目录 mkdir test_express
切换到新创建的目录 cd test_express
创建项目:执行命令 express firstApplication,此处的firstApplication为项目的名称;
切换到项目目录下 cd firstApplication;
执行npm install或者npm i命令安装相关依赖
执行node app.js或者node app来启动该项目;

项目结构

 项目代码

app.js

var createError = require('http-errors');
var express = require('express');
var path = require('path');
var cookieParser = require('cookie-parser');
var logger = require('morgan');
var http = require('http');
var indexRouter = require('./routes/index');
var usersRouter = require('./routes/users');
var app = express();
// view engine setup
app.set('port', process.env.PORT || 8891);
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');
app.use(logger('dev'));
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));
app.use('/', indexRouter);
app.use('/users', usersRouter);
// catch 404 and forward to error handler
app.use(function(req, res, next) {
  next(createError(404));
});
// error handler
app.use(function(err, req, res, next) {
  // set locals, only providing error in development
  res.locals.message = err.message;
  res.locals.error = req.app.get('env') === 'development' ? err : {};
  // render the error page
  res.status(err.status || 500);
  res.render('error');
});
//create the server 
http.createServer(app).listen(app.get('port'), function(){
  console.log('Express server listening on port ' + app.get('port'));
});
module.exports = app;

index.js和users.js是服务器调用的接口

index.js

var express = require('express');
var router = express.Router();

/* GET home page. */
router.get('/', function(req, res, next) {
  res.render('index', { title: 'Express' });
});

module.exports = router;

users.js

var express = require('express');
var router = express.Router();
var users = require('../user.json');
//GET users listing
router.get('/', function(req, res) {
  res.send({ title: 'Users',users:users });
});

//add a user
router.post('/addUser', function(req, res, next) {
  var body = '';
  req.on('data', function (data) {
    body += data;
  });
  req.on('end', function () {
    var json = JSON.parse(body);
    users["user"+json.id] = body;
    res.send({ Message: 'User Added'});
  });
});

//query by id
router.get('/:id', function(req, res, next) {
  var user = users["user" + req.params.id]
  if(user){
    res.send({ title: 'User Profile', user:user});
  }else{
    res.send({ Message: 'User not present'});
  }
});

module.exports = router;

views目录下创建users目录,然后在users目录下分别创建index.jade,new.jade和profile.jade

index.jade

h1 Users
p
    a(href="/users/new/") Create new user
ul
    - for (var username in users) {
    li
        a(href="/users/" + encodeURIComponent(username))= users[username].name
    - };

new.jade

h1 New User

form(method="POST" action="/Users/addUser")
    P
        label(for="name") Name

        input#name(name="name")
    P
        label(for="password") Password

        input#name(name="password")
    P
        label(for="profession") Profession

        input#name(name="profession")
    P
        input(type="submit", value="Create")

profile.jade

h1 Name: #{user.name}

h2 Profession: #{user.profession}

user.json:在项目根路径下创建user.json

{
  "user1" : {
    "name" : "test1",
    "password" : "password1",
    "profession" : "teacher",
    "id": 1
  },
  "user2" : {
    "name" : "test2",
    "password" : "password2",
    "profession" : "librarian",
    "id": 2
  },
  "user3" : {
    "name" : "test3",
    "password" : "password3",
    "profession" : "clerk",
    "id": 3
  }
}

利用postman测试

执行 node app.js启动项目,出现Express server listening on port 8891

http://localhost:8891/users/

http://localhost:8891/users/1

http://localhost:8891/users/addUser

 至此,一个很简单的基于nodejs的web项目就算是初始化好了!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值