最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

從零開始學習Node.js系列教程之基于connect和express框架的多頁面實現(xiàn)數(shù)學運算示例

 更新時間:2017年04月13日 11:32:33   作者:MIN飛翔  
這篇文章主要介紹了Node.js基于connect和express框架的多頁面實現(xiàn)數(shù)學運算,簡單講述了connect和express框架的原理及數(shù)學運算相關(guān)操作技巧,需要的朋友可以參考下

本文實例講述了Node.js基于connect和express框架的多頁面實現(xiàn)數(shù)學運算。分享給大家供大家參考,具體如下:

1、使用connect框架

.use方法用于綁定中間件到connect服務(wù)器,它會配置一系列在接到請求時調(diào)用的中間件模塊,此例中我們要配置的中間件有favicon logger static router

app.get/post/put        寫法:app.requestName('path', function(req, res, next){});

app-connect.js

 var connect = require('connect');  //npm install connect
 connect.createServer()
   .use(connect.favicon())
   .use(conect.logger())
   .use('/filez', connect.static(__dirname + '/filez'))
   .use(connect.router(function(app){
     app.get('/', require('./home-node').get);
     //一個URL字符串和兩個函數(shù)類型的參數(shù)
     //路由器配置函數(shù)可以包含不限數(shù)量的函數(shù),你可以為自己的應(yīng)用構(gòu)造一個處理函數(shù)的隊列
     app.get('/square', htutil.loadParams, require('./square-node').get);
     app.get('/factorial', htutil.loadParams, require('./factorial-node').get);
     app.get('/fibonacci', htutil.loadParams, require('./fibo2-node').get);
     app.get('/mult', htutil.loadParams, require('./mult-node').get);
   })).listen(3000);
console.log('listening to http://localhost:3000');

2、使用express框架

Express框架是一個基于connect(一個中間件框架)的web應(yīng)用框架

Express專注于構(gòu)建一個應(yīng)用,包括提供一個模板系統(tǒng);connect專注于做web服務(wù)的基礎(chǔ)設(shè)施

安裝Express和EJS(模塊處理系統(tǒng)) npm install express ejs

app-express.js

var htutil = require('./htutil');
var math = require('./math');
var express = require('express');
//var app = express.createServer(express.logger()); //express 2.X
var app = express();  //express 3.X
//可選,因為Express下默認為CWD/views
app.set('views', __dirname + '/views');
app.engine('.html', require('ejs').__express);
app.set('view engine', 'ejs');
app.configure(function(){
  app.use(app.router);
  app.use(express.static(__dirname + '/filez'));
  //默認的錯誤處理函數(shù),顯示棧軌跡
  //如果要顯示用戶友好的錯誤,app.err(function(err, req, res, next){
  // res.send(error page); //or res.render('template');
  // });
  app.use(express.errorHandler({
    dumpExceptions: true, showStack: true
  }));
/*
改成下面的話,瀏覽器會顯示一個簡單的消息-Internal Server Error內(nèi)部服務(wù)器錯誤
app.use(express.errorHandler({
    dumpExceptions: true
  }));
*/
});
//以上配置了必需的中間件,因為這里展示的配置項對應(yīng)的是模板系統(tǒng)的配置,所有.html文件會由EJS引擎處理
//以下是路由器配置
app.get('/', function(req, res){
  res.render('home.html', {title: "Math Wizard"});
});
app.get('/mult', htutil.loadParams, function(req, res){
  if (req.a && req.b) req.result = req.a * req.b;
  res.render('mult.html', {title: "Math Wizard", req: req});
});
app.get('/square', htutil.loadParams, function(req, res){
  if (req.a) req.result = req.a * req.a;
  res.render('square.html', {title: "Math Wizard", req: req});
});
app.get('/fibonacci', htutil.loadParams, function(req, res){
  if (req.a){
    math.fibonacciAsync(Math.floor(req.a), function(val){
      req.result = val;
      res.render('fibo.html', {title: "Math Wizard", req: req});
    });
  }else {
    res.render('fibo.html', {title: "Math Wizard", req: req});
  }
});
app.get('/factorial', htutil.loadParams, function(req, res){
  if (req.a) req.result = math.factorial(req.a);
  res.render('factorial.html', {title: "Math Wizard", req: req});
});
app.get('/404', function(req, res){
  res.send('NOT FOUND' + req.url);
});
//res.render函數(shù)通過一個模板文件渲染數(shù)據(jù),EJS只是Express里眾多模板引擎中的一個
//配置目的是讓EJS能夠為views目錄下的所有.html文件服務(wù)
/*Express里還有其他一些模板引擎
  res.render('index.haml', {..data..}); 使用Haml
  res.render('index.jade', {..data..}); 使用Jade
  res.render('index.ejs', {..data..}); 使用EJS
  res.render('index.coffee', {..data..}); 使用CoffeeKup
  res.render('index.jqtpl', {..data..}); 使用jQueryTemplates
也可以通過 app.set('view engine', 'haml');
     app.set('view engine', 'jade'); 方法來改變默認的渲染引擎
layout.html
默認情況下,模板中用于渲染的內(nèi)容會被命名為body,然后傳遞到layout模板中,當app-express.js調(diào)用
res.render('fibo.html'...)時,它會先用fibo.html渲染對應(yīng)的頁面片段,然后再使用layout模板渲染整個頁面
有兩種方法覆蓋這一默認的行為
1、在Express里創(chuàng)建一個全局的配置,通過這個全局配置來控制layout模板的啟用與禁用
app.set('view options', {layout: false(or true)});
2、覆蓋layout模板對應(yīng)的渲染方式或者使用不同的layout模板
res.render('myview.ejs', {layout: false(or true)});
或者res.render('page', {layout: 'mylayout.jade'});
<% code %> Javascript代碼
<%= code %> 顯示替換過HTML特殊字符的內(nèi)容
<%- code %> 顯示原始HTML內(nèi)容
*/
app.listen(3000);
console.log('listening to http://localhost:3000');

html頁面放在views目錄下

layout.html

<!DOCTYPE html>
<html>
<head>
  <title></title>
</head>
<body>
  <h1><%=title%></h1>
  <table>
    <tr>
      <td>
        <div class="navbar">
          <p><a href="/" rel="external nofollow" >home</a></p>
          <p><a href="/mult" rel="external nofollow" >Multiplication</a></p>
          <p><a href="/square" rel="external nofollow" >Square</a></p>
          <p><a href="/factorial" rel="external nofollow" >Factorial</a></p>
          <p><a href="/fibonacci" rel="external nofollow" >Fibonacci</a></p>
        </div>
      </td>
      <td></td>
    </tr>
  </table>
</body>
</html>

home.html

<% include layout.html %>
<p>Math Wizard</p>

mult.html

<% include layout.html %>
<% if (req.a && req.b){ %>
  <p class="result">
    <%=req.a%> * <%=req.b%> = <%=req.result%>
  </p>
<% } %>
<p>Enter numbers to multiply</p>
<form name="mult" action="/mult" method="get">
  A: <input type="text" name="a" /><br/>
  B: <input type="text" name="b" />
  <input type="submit" name="Submit" />
</form>

還有其他一些頁面就不一一列出來了,都大同小異

希望本文所述對大家nodejs程序設(shè)計有所幫助。

相關(guān)文章

  • npm ERR! code ELIFECYCLE錯誤及解決方法

    npm ERR! code ELIFECYCLE錯誤及解決方法

    有時候在使用npm運行命令時,可能會遇到錯誤,本文主要介紹了npm ERR! code ELIFECYCLE錯誤及解決方法,具有一定的參考價值,感興趣的可以了解一下
    2024-05-05
  • 使用node.js搭建服務(wù)器

    使用node.js搭建服務(wù)器

    最近需要完成一個課程設(shè)計,被項目經(jīng)理(組長)分配寫界面功能,下面小編通過本文給大家分享使用使用node搭建小型服務(wù)器的方法,需要的朋友參考下
    2017-05-05
  • node后端與Vue前端跨域處理方法詳解

    node后端與Vue前端跨域處理方法詳解

    從目前我了解的情況來看,前后端跨域使用的方式有很多種,這里記錄我使用最順手的一種,即在后端使用cors跨域,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-08-08
  • pm2啟動ssr失敗的解決方法

    pm2啟動ssr失敗的解決方法

    這篇文章主要介紹了pm2啟動ssr失敗的解決方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-06-06
  • nodejs+express實現(xiàn)文件上傳下載管理網(wǎng)站

    nodejs+express實現(xiàn)文件上傳下載管理網(wǎng)站

    這篇文章主要為大家詳細介紹了nodejs+express實現(xiàn)文件上傳下載管理的網(wǎng)站,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-03-03
  • nodejs acl的用戶權(quán)限管理詳解

    nodejs acl的用戶權(quán)限管理詳解

    這篇文章主要介紹了nodejs acl的用戶權(quán)限管理詳解,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-03-03
  • nodeJS服務(wù)器的創(chuàng)建和重新啟動的實現(xiàn)方法

    nodeJS服務(wù)器的創(chuàng)建和重新啟動的實現(xiàn)方法

    今天小編就為大家分享一篇nodeJS服務(wù)器的創(chuàng)建和重新啟動的實現(xiàn)方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-05-05
  • Node.JS如何實現(xiàn)JWT原理

    Node.JS如何實現(xiàn)JWT原理

    jwt是json web token的簡稱,本文介紹它的原理,最后后端用nodejs自己實現(xiàn)如何為客戶端生成令牌token和校驗token
    2020-09-09
  • pnpm的安裝和使用指南(推薦!)

    pnpm的安裝和使用指南(推薦!)

    如果你覺得npm比較慢,又不想用yarn,那么pnpm是一個很好的選擇,下面這篇文章主要給大家介紹了關(guān)于pnpm的安裝和使用的相關(guān)資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-05-05
  • Node.js使用Express創(chuàng)建Web項目詳細教程

    Node.js使用Express創(chuàng)建Web項目詳細教程

    如果需要入門使用node.js進行web開發(fā),正在學習 nodejs web開發(fā)指南 的和想快速了解node.js web開發(fā)模式的朋友,相信本文是有一定幫助意義的。
    2017-03-03

最新評論

奉贤区| 慈溪市| 商南县| 海阳市| 师宗县| 秀山| 南乐县| 重庆市| 大连市| 威宁| 姚安县| 华池县| 铜川市| 昆明市| 乳山市| 雅江县| 永康市| 阿拉尔市| 正蓝旗| 壤塘县| 杭州市| 景宁| 遵义县| 孙吴县| 庄浪县| 韶山市| 正阳县| 凉城县| 阳信县| 冀州市| 云霄县| 同仁县| 临夏县| 阿鲁科尔沁旗| 开原市| 忻城县| 青浦区| 吉水县| 琼结县| 黄龙县| 芜湖市|