问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

nodejs express handlebars 搭建的web工程 怎么写离线manifest

发布网友 发布时间:2022-04-08 01:30

我来回答

2个回答

懂视网 时间:2022-04-08 05:51

上面我们已经生成好了app原型,接着我们设计数据库

cmd命令行里:

mongo #进入数据库
use hello-world #创建项目数据库
db.addUser("shuaige", "123456") #这个数据库创建了一个叫帅哥的账号,密码123456 (但是我觉得可能我理解的不到位,你也可以不做这个操作)
#然后,我们就为这个hello-world数据库创建collection(collection就相当于oracle和mysql里的table)
db.createCollection("users") #创建一个集合,也就是表
db.users.insert({userid: "admin", password: "123456"}) #给users里添加一个文档,也就是一条记录账号admin,密码123456
ok,现在检查一下:
db.users.find() #如果看到你刚刚添加的文档记录,就ok咯

简单的数据库集合以及文档设置好,我们就回到express创建的node项目里,我们需要:

  • 在models下创建一个user.js,作为实体类映射数据库的users集合
  • 在views下做几个页面(可以用ejs也可以用html,我就用ejs吧)
  • 在routes下的index.js配置路由,也就是请求映射处理
    1. 在models下创建一个user.js,作为实体类映射数据库的users集合
      user.js
      1 var mongoose = require("mongoose"); // 顶会议用户组件
      2 var Schema = mongoose.Schema; // 创建模型
      3 var userScheMa = new Schema({
      4  userid: String,
      5  password: String
      6 }); // 定义了一个新的模型,但是此模式还未和users集合有关联
      7 exports.user = mongoose.model(‘users‘, userScheMa); // 与users集合关联

       

    2. 在views下面建index.ejs, errors.ejs, login.ejs, logout.ejs, homepage.ejs。 (index是自带的,不用建)
      index.ejs 

       1 <!DOCTYPE html>
       2 <html>
       3 <head>
       4 <title><%= title %></title>
       5 <link rel=‘stylesheet‘ href=‘/stylesheets/style.css‘ />
       6 </head>
       7 <body>
       8 <h1>Hello World</h1>
       9 <p>Welcome to <%= title %></p>
      10 <p><a href="login">登陆</a></p>
      11 </body>
      12 </html>

      login.ejs

       1 <!DOCTYPE html>
       2 <html>
       3 <head>
       4 <title><%= title %></title>
       5 <link rel=‘stylesheet‘ href=‘/stylesheets/style.css‘ />
       6 </head>
       7 <body>
       8 <h1>Hello World</h1>
       9 <p>Welcome to <%= title %></p>
      10 <form action="homepage" method="post">
      11  <p>
      12  <span>userId:</span>
      13  <br>
      14  <input id="userid" name="userid" type="text">
      15  </p>
      16  <p>
      17  <span>password:</span>
      18  <br>
      19  <input id="password" name="password" type="password">
      20  </p>
      21  <p><input type="submit" value="submit"></p>
      22 </form>
      23 </body>
      24 </html>

      logout.ejs

       1 <!DOCTYPE html>
       2 <html>
       3 <head>
       4 <title><%= title %></title>
       5 <link rel=‘stylesheet‘ href=‘/stylesheets/style.css‘ />
       6 </head>
       7 <body>
       8 <h1>Hello World</h1>
       9 <p>Welcome to <%= title %></p>
      10 <p>正在登出...</p>
      11 <script type="text/javascript">
      12  setTimeout(function(){
      13   window.location.href = "/";
      14  }, 500);
      15 </script>
      16 </body>
      17 </html>

      homepage.ejs

       1 <!DOCTYPE html>
       2 <html>
       3 <head>
       4 <title><%= title %></title>
       5 <link rel=‘stylesheet‘ href=‘/stylesheets/style.css‘ />
       6 </head>
       7 <body>
       8 <h1>Hello World</h1>
       9 <p>Welcome to <%= title %></p>
      10 <p><a href="logout">登出</a></p>
      11 </body>
      12 </html>

      error.ejs 出错页面,我没做,你有兴趣可以自己试试玩玩。 

    3. 在routes下的index.js配置路由,也就是请求映射处理
      index.js
       1 var express = require(‘express‘);
       2 var router = express.Router();
       3 var mongoose = require(‘mongoose‘);
       4 var user = require(‘../models/user‘).user;
       5 mongoose.connect(‘mongodb://localhost/hello-world‘);
       6 
       7 /* GET home page. */
       8 router.get(‘/‘, function(req, res) {
       9 res.render(‘index‘, { title: ‘index‘ });
      10 });
      11 
      12 /*login*/
      13 router.get(‘/login‘, function(req, res) {
      14 res.render(‘login‘, { title: ‘login‘ });
      15 });
      16 
      17 /*logout*/
      18 router.get(‘/logout‘, function(req, res) {
      19 res.render(‘logout‘, { title: ‘logout‘ });
      20 });
      21 
      22 /*hompage*/
      23 router.post(‘/homepage‘, function(req, res) {
      24 var query_doc = {userid: req.body.userid, password: req.body.password};
      25 (function(){
      26  user.count(query_doc, function(err, doc){
      27  if(doc == 1){
      28   console.log(query_doc.userid + ": login success in " + new Date());
      29   res.render(‘homepage‘, { title: ‘homepage‘ });
      30  }else{
      31   console.log(query_doc.userid + ": login failed in " + new Date());
      32   res.redirect(‘/‘);
      33   }
      34  });
      35  })(query_doc);
      36 });
      37 
      38 module.exports = router;

      ok,基本上大功告成,可以试试咯。

    下面讲讲如何调试服务器端的代码:

    我们最好借助一个叫node-inspector的工具包

    npm i -g node-inspector #安装node-inspector

    然后在cmd里运行

    node-inspector

    再新打开一个cmd,cd到项目hello-world目录下

    node --debug ./bin/www (或者 node --debug-brk ./bin/www , 旧版本express创建的node程序请使用 node --debug app.js)

    在浏览器里打开http://127.0.0.1:8080/debug?port=5858
    再新建窗口打开http://127.0.0.1:3000/
    就在浏览器可以调试服务器端代码。

    使用nodejs+express+mongodb开发web的例子

    标签:

    热心网友 时间:2022-04-08 02:59

      1.自动更新:浏览器除了在第一次访问 Web 应用时缓存资源外,只会在 cache manifest 文件本身发生变化(即使是注释变化)时更新缓存。而 cache manifest 中的资源文件发生变化并不会触发更新。
      2.手动更新:开发者也可以使用 window.applicationCache 的接口更新缓存。方法是检测 window.applicationCache.status 的值,如果是 UPDATEREADY,那么可以调用 window.applicationCache.update() 更新缓存。
    声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
    玉米仁子饭产自哪里 中国期货交易所的交易品种有哪些? 历史要怎么读,有啥诀窍 高中历史诀窍 年终会活动策划方案 深度解析:第一财经回放,探索财经新风向 逆水寒手游庄园怎么邀请好友同住 逆水寒手游 逆水寒不同区可以一起组队吗? 逆水寒手游 逆水寒怎么进入好友世界? 逆水寒手游 逆水寒怎么去别人的庄园? 火龙果含糖量高吗? 火龙果的糖分到底高不高? 火龙果糖分含量高吗 火龙果含糖量真的很高吗? 井陉之战文言文原文。。急求阿。神们。。 荒野行动按那个键可以把人变成蓝色 胯下之辱全文的古文翻译。。。谢谢了。 源自历史故事的成语3个和3个源自寓言古文的成语 “陛下不能将兵,而善将将,此乃信之所以为陛下禽也。”的文言文翻译是什么? 古文常用语翻译 (古文) 韩信胯下之辱的翻译 马革裹尸文言文翻译? 文言文多多益善 韩信的文言文有哪些? 服装加工厂的计件工资如何计算? 服装店店员一个月工资多少 苹果12低亮度出现绿屏现象,官方对此有何说明? “背水一战”什么意思? 染色打样工的工资是多少 古文背水一战怎么说 火龙果含糖量多吗?高吗? 火龙果的含糖 ebod 206 种子 谁有ebod168 女の上向き美形おっぱいで选ぶ。白川ゆかり种子下载求好心人给 EBOD系列 最后的一男一女是谁 谁说EBODY系列好看的 慕思凯奇系列意大利进口的difebodiluna的床垫好不好 求EBODY全集种子 要AVI高清格式的 不要RMVB的 最好是1-200多的 给高分!! 腾讯打击DNF个人搬砖党吗? 腾讯游戏平台怎么双开地下城?要步骤 DNF要制裁多开了吗 c#,纸牌接龙判断纸牌移动后是否放该放置的代码 谁知道纸牌接龙电脑版 纸牌接龙电脑上怎么玩? DNF开双开,会封号和制裁么??? dnf双开搬砖怎么不制裁 今年八月dnf是不是打击搬砖?什么时候腾讯才可以放松? dnf多开制裁什么原因 DNF多开会不会封号? dnf用虚拟机多开会被制裁吗 人力资源管理职业道德要求