Nodejs Express初学

刚好要在公司的一个数据展示项目(Nodejs开发)开发点东西,顺便学习一下nodejs 的express框架。假定我们安装好了nodejs 的环境(Windows下).

  1. 安装express
    全局安装
npm install --g express
npm install -g express-generator

安装完成可以express -V(大写的) 查看express版本

  1. 使用express
    a. 项目初始化
    进入一个你想要放置项目的目录,然后执行下面命令,初使化一个名为test的项目
express -e test 

如果第一次使用,可能会初使化完成后,会看到
install dependencies: cd test & npm install,
这是提示一些依赖现在还没安装,先进入项目test目录,然后执行 npm install安装依赖模块。
安装完成后,如果没有别的错误,就执行

npm start

看看是否正常,如果没有报错,在浏览器里输入 localhost:3000.会显示Welcome to Express.

这样,初始完成。

b. express 初始化文件与文件夹的说明

项目创建成功之后,test 目录下
五个文件夹,
主文件:app.js
配置信息文件:package.json

bin是项目的启动文件,配置以什么方式启动项目,默认 npm start
public是项目的静态文件,放置js css img等文件
routes是项目的路由信息文件,控制地址路由
views是视图文件,放置模板文件ejs或jade等(其实就相当于html形式文件啦~)
node_modules 是npm install 时安装的一些依赖组件

package.json

 {
      "name": "test",
      "version": "0.0.0",
      "private": true,
      "scripts": {
        "start": "node ./bin/www"
      },
      "dependencies": {
        "body-parser": "~1.12.0",
        "cookie-parser": "~1.3.4",
        "debug": "~2.1.1",
        "ejs": "~2.3.1",
        "express": "~4.12.2",
        "morgan": "~1.5.1",
        "serve-favicon": "~2.2.0"
      }
}  

app.js 这里只是初始形式,根据实际开发,可添加新的引用以及其他逻辑
模块还要继续导出给 bin文件夹下的www文件使用

var express = require('express');
var path = require('path');
var favicon = require('serve-favicon');
var logger = require('morgan');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');

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

var app = express();

// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'ejs');

// uncomment after placing your favicon in /public
//app.use(favicon(__dirname + '/public/favicon.ico'));
app.use(logger('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));

app.use('/', routes);
app.use('/users', users);

// catch 404 and forward to error handler
app.use(function(req, res, next) {
  var err = new Error('Not Found');
  err.status = 404;
  next(err);
});

// error handlers

// development error handler
// will print stacktrace
if (app.get('env') === 'development') {
  app.use(function(err, req, res, next) {
    res.status(err.status || 500);
    res.render('error', {
      message: err.message,
      error: err
    });
  });
}

// production error handler
// no stacktraces leaked to user
app.use(function(err, req, res, next) {
  res.status(err.status || 500);
  res.render('error', {
    message: err.message,
    error: {}
  });
});


module.exports = app;

其他相关知识:
1. require:
编写稍大一点的程序时一般都会将代码模块化。在NodeJS中,一般将代码合理拆分到不同的JS文件中,每一个文件就是一个模块,而文件路径就是模块名。

在编写每个模块时,都有require、exports、module三个预先定义好的变量可供使用。

require函数用于在当前模块中加载和使用别的模块,传入一个模块名,返回一个模块导出对象。

模块名可使用相对路径(以./开头),或者是绝对路径(以/或C:之类的盘符开头),模块名中的.js扩展名可以省略。
例如:

var express = require("express");
var func1 = require("./func1");// 是与当前main.js同路径下的func1.js模块
var func2 = require("../nodejs/func2");// func2.js则位于与main.js父文件同路径下的
  1. exports对象是当前模块的导出对象,用于导出模块公有方法和属性。
    别的模块通过require函数使用当前模块时得到的就是当前模块的exports对象。
    例如:
exports.func1 = function(){ 
    console.log("This is func1");
};
/*或者这样
function func1(){
    console.log("This is func1");
}
exports.func1 = func1;
*/

你可能感兴趣的:(Nodejs,express,nodejs)