NodeJS學習筆記之express

Express學習javascript

 

  • API分析

 

  1. Set、Get

app.set('title', 'My Site');html

app.get('title'); // "My Site"java

app.get(「string」)和app.get(path, [callback...], callback)要區別開,前面一個函數是獲取string的value,然後一個是路由函數。node

下面的內建的能夠改變Express行爲的設置jquery

  • env 運行時環境,默認爲 process.env.NODE_ENV 或者 "development"
  • trust proxy 激活反向代理,默認未激活狀態
  • jsonp callback name 修改默認?callback=的jsonp回調的名字
  • json replacer JSON replacer 替換時的回調, 默認爲null
  • json spaces JSON 響應的空格數量,開發環境下是2 , 生產環境是0
  • case sensitive routing 路由的大小寫敏感, 默認是關閉狀態, "/Foo" 和"/foo" 是同樣的
  • strict routing 路由的嚴格格式, 默認狀況下 "/foo" 和 "/foo/" 是被一樣對待的
  • view cache 模板緩存,在生產環境中是默認開啓的
  • view engine 模板引擎
  • views 模板的目錄, 默認是"process.cwd() + ./views"

經常使用的set設置:express

app.set('port', process.env.PORT || 3000);  //設置端口npm

app.set('views', __dirname + '/views');  json

app.set('view engine', 'html');// app.set('view engine', 'ejs');緩存

  1. app.engine(ext, callback)

註冊模板引擎的 callback 用來處理ext擴展名的文件 默認狀況下, 根據文件擴展名require() 對應的模板引擎。cookie

app.engine('.html', ejs.__express);

app.engine('.ejs', ejs.__express);

app.engine('.jade', jade.__express);

 

 

  1. app.use([path], function)

 

使用中間件 function,可選參數path默認爲"/"。這個中間件是nodejs最重要的功能,express也繼承了中間件的功能。當path爲\或者無時,也就意味着每個頁面每個請求都會執行。根據這個功能可使用中間件作路由。

app.use(function(req, res, next){

  res.locals.user = req.session.user;

  var err = req.session.error;

  delete req.session.error;

  res.locals.message = '';

  if (err) res.locals.message = '<div class="alert alert-error">' + err + '</div>';

  next();

});

這個函數會在每個頁面請求時都被調用。

app.use(express.static(path.join(__dirname, 'public')));,express.static( )是處理靜態請求的,設置了public文件,public下全部文件都會以靜態資料文件形式返回(如樣式、腳本、圖片素材等文件)

l   路由

app.use('/', routes);

app.use('/reg', reg);

app.use('/login', login);     

app.use('/logout', logout);

l   供應器

它會針對請求進行迴應,你能夠根據你的需求使用多箇中間件,Http請求將會經過每個中間件直到其中一箇中間件對請求進行迴應。

 

app.use(express.favicon());

app.use(express.logger('dev'));

app.use(express.bodyParser());

app.use(express.methodOverride());

app.use(express.cookieParser());

app.use(express.cookieSession({secret : 'blog.fens.me'}));

app.use(express.session({

        secret : 'blog.fens.me',

    store: store,

    cookie: { maxAge: 900000 } // expire session in 15 min or 900 seconds

}));

  1. app.VERB(path, [callback...], callback)

app.VERB() 方法爲Express提供路由方法, VERB 是指某一個HTTP 動做, 好比 app.post()。 能夠提供多個callbacks,這多個callbacks都將會被平等對待 ,它們的行爲跟中間件同樣,也有一個例外的狀況,若是某一個callback執行了next('route'),它後面的callback就被忽略。這種情形會應用在當知足一個路由前綴,可是不須要處理這個路由,因而把它向後傳遞。

app.get('/', routes.index);

app.all('/login', notAuthentication);

app.get('/login', routes.login);

app.post('/login', routes.doLogin);

app.get('/logout', authentication);

app.get('/logout', routes.logout);

app.get('/home', authentication);

app.get('/home', routes.home);

//mongo

app.get('/movie/add',movie.movieAdd);

app.post('/movie/add',movie.doMovieAdd);

app.get('/movie/:name',movie.movieAdd);

app.get('/movie/json/:name',movie.movieJSON);

app.get('/users', user.list);

這個是一個路由函數,做用跟app.use('/', routes)同樣。

  1. Request

l   req.params

// GET /file/javascripts/jquery.js

req.params[0]

// => "javascripts/jquery.js"

 

// GET /user/tj

req.params.name

// => "tj"

附錄:

nodeJs免安裝環境下裝express:

npm config set prefix " N:\nodejs"      //設置npm install -g module時路徑

npm config set cache "N:\ nodejs\node_cache"

「path」,輸入"N:\nodejs"                              //設置node環境變量

「NODE_PATH」,輸入「N:\nodejs\node_modules」   //設置插件環境變量

npm install -g express@3.16.0

4.0時須要先安裝npm install -g express-generator而後安裝npm install -g express

npm uninstall moudleName:         //卸載node模塊

相關文章
相關標籤/搜索