精华内容
下载资源
问答
  • node案例.rar

    2020-05-07 16:14:47
    使用node,javascript,mysql,实现登录注册表单的验证, 提交方法是利用ajax的post,路由配置,中间件,静态资源都配好了. 这是完整的,包含html,css,JavaScript文件,数据库的话自己创建自己的库和表就行
  • node server.js
  • node案例

    2017-08-28 08:00:17
    node案例
  • node学习案例.zip

    2019-08-30 16:50:14
    1.feedback-fs:是通过文件读写实现的留言板程序,没有涉及数据永久存储。 2.feedback-express:是通过express重写的留言板程序,没有涉及数据永久存储。...之后将命令窗口切換到js所在目录,输入【node js名称】执行。
  • Node学生管理案例

    千次阅读 2018-08-12 15:08:32
    一、完成功能:实现对“学生信息”的增删改查。并且实现了数据持久化。 二、使用到的技术:基于Express框架和art-template模板引擎... Node.js基于Express和json文件的CRUD 2:使用MongoDB数据库进行数据持久化 ...

    一、完成功能:实现对“学生信息”的增删改查。并且实现了数据持久化。

    二、使用到的技术:基于Express框架和art-template模板引擎,并且将路由模块分离出来,更利于开发和维护。

    已开源,可直接下载

    以下由数据持久化方式分类

    1:使用Json文件进行数据持久化

          Node.js基于Express和json文件的CRUD

    2:使用MongoDB数据库进行数据持久化

          https://blog.csdn.net/LitongZero/article/details/81604185

    3:使用MySQL数据库进行数据持久化

          Node.js学生管理系统(Express+MySQL)

    展开全文
  • node.js学习案例

    2013-09-06 10:36:19
    适合初学者学习node.js,就根据案例做了一个node.js的案例,供大家学习和指导,使用时请先安装下载使用mongodb数据库
  • node.js详解+案例

    万次阅读 多人点赞 2021-01-25 17:25:34
    系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 例如:第一章 Python 机器学习入门之pandas的使用 ...提示:以下是本篇文章正文内容,下面案例可供参考 一.node.js 是什么?[ nod

    系列文章目录

    提示:node基础, 系统模块,第三方模块,node.js 对数据库的操作(增删改查).使用node实现对列表简单的增删改查功能,博客项目连接数据库,博客项目前端

    在这里插入图片描述



    前言

    大家好呢,今天 一起 学习一下node.js. node.js 是一个基于 javascript 这门语言而开发出来的技术,本文就介绍了node.js学习的基础内容。

    在这里插入图片描述


    提示:以下是本篇文章正文内容,下面案例可供参考

    一.node.js 是什么?

    node.js官网
    node.js中文网

    学习 Node.js 不是学习一种新的语言,而是一门技术

    二.Node 入门

    2.1 node 组成

    1、JavaScript 由三部分组成,ECMAScript,DOM,BOM
    2、Node.js是由ECMAScript及Node 环境提供的一些附加API组成的,包括文件、网络、路径等等一些更加强大的 API

    2.2 node运行

    node是基于javascript来使用的,所以node文件的后缀名都是 .js
    退出运行的方法:crtl c 运行文件:
    node 文件名.js 
    

    三.系统模块

    3.1 什么是系统模块

    Node运行环境提供的API. 因为这些API都是以模块化的方式进行开发的, 所以我们又称Node运行环境提供的API为系统模块

    3.2 文件操作

    同步读取

    • 语法:
    var fs=require('fs')
    var res=fs.readFileSync('./kl.txt','utf8')
    console.log(res);
    
    • 案例:
    //引入系统模块
    const http = require ('http')
    const fs =require('fs');
    //创建http服务
    const app = http.createServer()
    //客户请求 ,给予响应
    app.on('request',function(req,res){
        console.log(req.url);
        if(req.url=='index' || req.url=='/'){
            let result = fs.readFileSync('html/index.html','utf8')
            res.end(result)
        }else if(req.url == '/order'){
            let result = fs.readFileSync('html/order.html','utf8')
            res.end(result)
        }else if(req.url=='/my'){
            let result = fs.readFileSync('html/my.html','utf8')
            res.end(result)
        }else if (req.url =='add'){
            let result = fs.readFileSync('html/add.html','utf8')
            res.end(result)
            
        }else{
            let result = fs.readFileSync('html/error.html','utf8')
            res.end(result)
        }
    })
    //启动
    app.listen(3001,function(){
        console.log('server is running at http://127.0.0.1:3001')
    })
    
    

    异步读取

    const fs=require('fs')
    fs.readyFile('kl.txt','utf8',function(err,data){})
    或
    fs.readFile('kl.txt','utf8',(err,data)=>{
        console.log(err)
        console.log(data)
    })
    

    3.3 写入文件

    语法

    fs.writeFile()
    

    案例

    const fs = require('fs')
    fs.writeFile('./kl..txt', 'hello', err => {
        if (err) throw err;
        console.log('文件写入成功')
    })
    

    回调函数参数为一个的,可以省略()


    四.第三方模块

    4.1. 如何获取第三方模块(其他开发者开发的模块叫第三方模块)

    下载和卸载第三方模块
    下载:npm install 模块名称
    卸载:npm unintall package 模块名称

    4.2. 本地安装和全局安装

    • 本地安装:(模块当前项目使用)
    npm install jquery
    
    npm uninstall jquery
    
    • 全局安装:模块被下载全局目录下,所有项目都可以使用
    npm install nodemon -g
    
    npm uninstall nodemon -g
    

    4.3安装慢怎么办

    原因:

    • :nodejs.com 在国外服务器上

    解决:

    • 安装nrm,通过nrm更换下载源,更换之后,任然使用npm命令安装模块
    • 安装cnpm,使用cnpm安装模块

    nrm使用:

    • 使用npm install nrm -g 下载
    • 查询 nrm ls
    • 切换下载地址 nrm use
    • 下载模块 npm install 模块名称

    在这里插入图片描述
    cnpm 使用:

    使用npm安装 cnpm,同时更换所需下载源

    • npm install -g cnpm --registry-http://registry.npm.taobao.org

    安装成功后,使用cnpm命令安装第三方模块

    • cnpm install jquery

    4.4如果安装不成功报一个 错误:在此系统上禁止运行脚本则需要在Windows PowerShell修改执行策略。

    第一步:Start-Process powershell -Verb runAs(以管理员的方式打开)

    在这里插入图片描述

    第二步:从普通模式转至管理员模式,输入以下set-ExecutionPolicy RemoteSigned命令然后按下回车键。
    在这里插入图片描述
    输入:Y 或者A 就可以了


    五.node.js 对数据库的操作(增删改查)

    //const 声明 
    //require 引入
    const  mysql=require('mysql');
    
    let pool = mysql.createPool({
        host     : 'localhost',
        user     : 'root',
        password : 'root',
        database : 'blog'
    })
    
    pool.getConnection((err,connection)=>{
        if (err) throw err;
        let uname='root';
        let upwd='root';
        let sql="SELECT * FROM aa ";
        connection.query(sql,[uname,upwd],(err,result,fields)=>{
            if(result.length>0){
                console.log("登录成功");
            }else{
                console.log("登录失败");
            }
        })
        connection.release();
    })
    
    //insert
        let username = '小明';
        let people = '小张';
        let score = '100'
    let sql2 = "INSERT INTO people (username,people,score) VALUE(?,?,?)";
    pool.query(sql2,[username,people,score],(err, result, fields)=>{
        if (result.length > 0) {
            console.log(result);
        } else {
            console.log(result);
        }
    })
    

    六.使用node实现对列表简单的增删改查功能

    在这里插入图片描述
    //html
    在这里插入图片描述

    //api.js
    在这里插入图片描述
    //编辑页

          <script>
            // 获取传递过来的博客 id 的值
            let id = window.location.search.split("=")[1];
            http_get("/api/blog?id=" + id, (data) => {
              let json = JSON.parse(data);
              document.querySelector("#title").value = json.title;
            });
    
            document.querySelector(".btn").addEventListener("click", () => {
              let params = {
                id: id,
                title: document.querySelector("#title").value,
              };
    
              http_post("/api/edite", params, (data) => {
                if (data == "success") {
                  window.location.href = "index.html";
                }
              });
            });
          </script>
    

    七.博客项目_连接数据库(后端)

    controller

    //引入mysql
    const { exec } = require("../db/mysql");
    const { SuccessModel } = require("../model/resModel");
    // 博客列表
    const getList = () => {
      return exec("select * from blog");
    };
    // 博客详情
    const getDetail = (id) => {
      let msgResult= exec("select * from blog where id=" + id);
      return msgResult.then((data) => {
        return new SuccessModel('',data)
      });
    };
    // 新增数据
    const newBlog = function (blogData) {
      console.log(blogData);
      let sql = `insert into blog values(null,'${blogData.title}','${
        blogData.content
      }',${Date.now()},'${blogData.author}')`;
      let result = exec(sql);
      return result.then((data) => {
        return data.insertId;
      });
    };
    /**
     * 更新博客
     */
    const updateBlog = (id, postData) => {
      let sql = `update blog set title='${postData.title}',content='${postData.content}' where id=${id}`;
      let result = exec(sql);
      return result.then((data) => {
      /*
      *三元表达式   data.affectedRows 如果==1 那么返回true否则返回false
      */
        return data.affectedRows == 1 ? true : false;
      });
    };
    // 删除博客(根据id删除)
    const deleteBlog = (id) => {
      let sql = `delete from blog where id=${id}`;
      let result = exec(sql);
      return result.then((data) => {
        return data.affectedRows == 1 ? true : false;
      });
    };
    
    //暴露
    module.exports = {
      getList,
      getDetail,
      newBlog,
      updateBlog,
      deleteBlog,
    };
    

    router

    /**
     * 路由文件:接受用户的请求,并进行返回数据
     */
    // 引入blog 控制器
    const {
      getList,
      getDetail,
      newBlog,
      updateBlog,
      deleteBlog,
    } = require("../controller/blog");
    const { SuccessModel, ErrorModel } = require("../model/resModel");
    const handlerBlog = (req) => {
      // 使用 URL 模块对 req.url 进行封装
      let myUrl = new URL(req.url, "http://127.0.0.1:3000/");
      let method = req.method;
      let pathname = myUrl.pathname;
    
      // console.log(pathname);
      let msgResult = null;
      if (pathname == "/api/blog/list" && method == "GET") {
        msgResult = getList();
        // then 方法的返回值也是一个 promise
        return msgResult.then((data) => {
          return new SuccessModel("", data);
        });
      } else if (pathname == "/api/blog/detail" && method == "GET") {
        let id = myUrl.searchParams.get("id");
        msgResult = getDetail(id);
        return msgResult.then((data) => {
          return new SuccessModel("", data);
        });
      } else if (pathname == "/api/blog/new" && method == "POST") {
        msgResult = newBlog(req.body);
        return msgResult.then((data) => {
          return new SuccessModel("", data);
        });
      } else if (pathname == "/api/blog/update" && method == "POST") {
        let id = myUrl.searchParams.get("id");
        let postData = req.body;
        msgResult = updateBlog(id, postData);
        return msgResult.then((data) => {
          return new SuccessModel("", data);
        });
      } else if (pathname == "/api/blog/del" && method == "POST") {
        let id = myUrl.searchParams.get("id");
        msgResult = deleteBlog(id);
        return msgResult.then((data) => {
          return new SuccessModel("", data);
        });
      }
      return msgResult;
    };
    // 暴漏 handlerBlog 方法
    module.exports = {
      handlerBlog,
    };
    
    

    mysql

    const mysql = require("mysql");
    // 创建链接
    const con = mysql.createConnection({
      host: "localhost",
      user: "root",
      password: "root",
      port: 3306,
      //数据库名
      database: "blog3",
    });
    // 打开链接
    con.connect();
    const exec = (sql) => {
      return new Promise((resolve, reject) => {
        con.query(sql, (err, result) => {
          if (err) {
            reject("执行sql语句失败");
            return;
          }
          resolve(result);
        });
      });
    };
    module.exports={
        exec
    }
    
    

    在postman中运行(测试)

    在这里插入图片描述

    八.博客项目_前端实现

    在这里插入图片描述

    在这里插入图片描述

    <script>
          fetch("http://127.0.0.1:3000/api/blog/list",{
            credentials: 'omit'
          })
            .then((response) => {
              return response.json();
            })
            
            .then((data) => {
                console.log();
              data.data.forEach((item) => {
                console.log(item)
                let li = `
                <div class="article-list-item-mp">
                      <div class="list-item-title">
                        <p class="article-list-item-txt">
                          <a href="./detail.html?id=${item.id}" class="title_"                          target="_blank" title="编辑">${item.title}</a>
              ·
              ·
              ·
              ·
                  `;
                document.querySelector(".right_content").insertAdjacentHTML("afterbegin", li);
              });
            });
        </script>
    

    总结

    提示:这里对文章进行总结:
    例如:以上就是本次的内容啦,本文简单介绍了node.js的使用,而node.js提供了大量能使我们快速便捷地处理逻辑的方法。

    展开全文
  • node实战书中配套案例

    2014-08-19 14:15:25
    node实战书中配套案例,感觉还不错,可以在本地环境运行调试,帮助更好的掌握node技术
  • node+express项目案例(一)

    千次阅读 2019-06-02 13:40:28
    node+express项目案例(一):https://blog.csdn.net/Chris__wang/article/details/90738551 node+express项目案例(二):https://mp.csdn.net/postedit/90738794 node+express项目案例(三):...

     

    node+express项目案例(一):https://blog.csdn.net/Chris__wang/article/details/90738551

    node+express项目案例(二):https://blog.csdn.net/Chris__wang/article/details/90738794

    node+express项目案例(三):https://blog.csdn.net/Chris__wang/article/details/90744140


    项目地址:https://github.com/wangyeky3419/node-app

    数据库用的是mysql数据库,表内数据会放在代码中

    本项目虽然页面不多,但是包含了基本的数据库建立,查询,修改,删除,插入,路由管理以及artTemplate模板应用,页面登录,cookie登录用户信息存储,md5密码加密等

    项目地址:https://github.com/wangyeky3419/node-app

    首先介绍一下页面,先上一下页面图片(由于部分页面是整个网页截图,图片可能会被压缩,造成显示变形

    项目技术包含:

                                  node;

                                  express;

                                  artTemplate;

                                  bootstrap   (v4.0.0);

                                  bootstrapTable   (v1.14.2);

                                  jquery   (v3.3.1);

                                  bootstrapValidator   (v0.5.3);

                                  alert.js(一个alert提示插件)

                                  数据库使用的是mysql数据库

    正是因为bootstrap使用了最新的4版本,也导致了bootstrapValidator   验证的时候部分样式显示不出来,解决办法可以在bootstrap样式文件中加入对应类,或者使用bootstrap3,又或者使用其他表单验证插件

    登录页面

    主页面

    新增

    新增成功

    修改

    删除

    新闻列表

     页面大致现在只有这些,其他基本一样,下面是具体内容部分,请看node+express项目案例(二)

    展开全文
  • 这是一个node.js的博客案例,代码编写规范,适合初学者阅读.
  • 本文主要介绍了原生node.js案例--前后台交互。本案例包含4部分:(1)HTML部分;(2)ajax部分;(3)JavaScript部分;(4)node服务器部分。具有很好的参考价值,下面跟着小编一起来看下吧
  • node+express项目案例(二)

    千次阅读 2019-06-02 15:01:03
    node+express项目案例(一):https://blog.csdn.net/Chris__wang/article/details/90738551 node+express项目案例(二):https://mp.csdn.net/postedit/90738794 node+express项目案例(三):...

     

    node+express项目案例(一):https://blog.csdn.net/Chris__wang/article/details/90738551

    node+express项目案例(二):https://blog.csdn.net/Chris__wang/article/details/90738794

    node+express项目案例(三):https://blog.csdn.net/Chris__wang/article/details/90744140


    项目地址:https://github.com/wangyeky3419/node-app

    数据库用的是mysql数据库,表内数据会放在代码中

    本项目虽然页面不多,但是包含了基本的数据库建立,查询,修改,删除,插入,路由管理以及artTemplate模板应用,页面登录,cookie登录用户信息存储,md5密码加密等

    前面已经介绍了页面的基本样式,下面开始介绍一下代码部分

    项目的整体架构如上图   

    README.md

    # bin 项目的启动文件,也可以放其他脚本
    # node_modules 项目依赖
    # public 存放静态文件(css, js, img)
    # routes 路由控制器
    # views 视图目录 (暂时没用上)
    # template  模板放的位置
    # app.js 项目入口及程序启动文件
    # package.json 配置信息
    

     由于没用涉及到文件上传,故而static目录暂时也没有用上,目录结构很清晰简单

    首先介绍app.js   项目入口  注:文件中有些中间件暂时没用用上,但是后期可能会用上,所以没用删除

    1. 安装node环境

    2. 根据引入的中间件下载依赖    如npm install express express-static ....   --save

    var express = require('express');//express框架
    var static = require('express-static')//接受一个参数,就是静态资源文件所在的目录,也就是文件读取
    var bodyParser = require('body-parser');//能够解析数据类的post,但是对于文件上传类型的post不能解析,所以他有点不好
    var multer = require('multer');//解析post文件
    var cookieParser = require('cookie-parser');
    var cookieSession = require('cookie-session');
    //创建一个multer对象,指明文件上传到哪个目录
    const multerObj = multer({dest:'./static/upload'})
    // var consolidate = require('consolidate');//----------------------
    var atrTemplate = require('express-art-template')
    
    const expressRoute = require('express-route');
    var path = require('path');//解析文件路径
    var favicon = require('serve-favicon');
    
    var server = express();//创建服务
    server.listen(8080);
    var router = express.Router();
    //1.获取前台请求数据
    //get
    server.use(bodyParser.urlencoded())//解析post数据的req.body数据,不然解析不出来会报错
    server.use(multerObj.any())
    //2. cookie session
    server.use(cookieParser())
    server.use(cookieParser());
    (function(){
        //防止被污染变量,用一个函数包起来
        var keys = [];
        for(var i = 0; i < 10000; i++){
            keys[i]='a_'+Math.random()
        }
        server.use(cookieSession({
            name:'session_id',
            keys:keys,
            maxAge:20*60*1000//20min后过期
        }));
    })()
    
    server.use(express.static(__dirname+'/public/'))//将静态文件目录指定到public下
    server.use(express.static(__dirname+'/template/'))//将每个页面的静态文件目录指定到template下
    
    //======================模板================================
    //将指定的art文件渲染成html(art)文件
    server.engine('art',atrTemplate);
    //模板文件放在哪,这里的views是固定写法,指定模板文件位置(这里是放在template里)
    server.set('views','./template');
    //输出什么东西,view engine(写法固定,意思是视图引擎),这里设置的是输出html
    server.set('view engine','html');
    //======================route路由==========================
    //创建route放在routes文件夹中  route必须用use   不能用get
    
    server.use('/',require('./routes/index.js')())//当访问根目录的时候,跳转到routes/index.js文件里的route
    // server.use('/login',require('./routes/web/login.js')())//当访问login目录的时候,跳转到web/login.js文件里的route里

    代码中注释写的非常清楚了,所以文章里就不过多介绍了

    接着是跳转到routes下

    其中routes下index.js是主路由,login.js    news.js    user.js分别是对应页面的路由,

    index.js

    const express = require('express');
    const urlLib = require('url');
    
    module.exports = function(){
        var router = express.Router();
        //检查登录状态,如更没登录,跳转到登录状态
        router.use((req,res,next)=>{//没有登录
            if(req.url!='/favicon.ico'){
                var pattern = new RegExp("/", "g");
                var reqUrl = req.url.replace(pattern,'');
                reqUrl = '/'+reqUrl
                if(!req.session['admin_id']&&reqUrl!='/login'){
                    //这里检查如果没有登录(没有admin_id)就会重定向到登录界面
                    //当登录后,就会设置admin_id
                    res.redirect('/login');//重定向
                    //备注,重定向后还是会重新访问这里文件,这时候还会做判断,如果判断失败,走else
                }else{
                    next()
                }
            }
        });
        router.get('/',(req,res)=>{
            res.render('index.art',{
                path:'./user/user.art'
            })
        })
    
        //当访问login,跳转到login路由,进行登录页面渲染
        router.use('/login',require('./login.js')());
    
        //当访问user,跳转到user路由,进行user.art渲染
        router.use('/user',require('./user.js')());
     
        //当访问news,跳转到news路由,进行news.art渲染
        router.use('/news',require('./news.js')());
       
        return router;
    }

    在index.js里面检查登录状态时,经常会有其他路径干扰,故而加上了过滤,这里如果有大神有好办法,也希望指教一下,

    routes/login.js

    const express = require('express');
    const mysql = require('mysql');
    const utils = require('../public/utils/md5.js')//引入md5
    var db = mysql.createPool({
        host:'localhost',
        user:'root',
        password:'9527',
        database:'learn'
    });
    module.exports = function(){
        var router = express.Router();
        //当请求方式为get的时候,约定为访问页面
        router.get('/',(req,res)=>{
            res.render('login/login.art',{});
        })
        //当请求方式为post的时候,约定为登录操作
        router.post('/',(req,res)=>{
            var username = req.body.userName;
            //将获取的密码转成md5加密形式,而且数据库存的也是加密后的,并且有后缀
            var password = utils.md5(req.body.password+utils.MD5_SUFFIX);
            db.query(`SELECT * FROM admin_table WHERE username='${username}'`,(err,data)=>{
                if(err){
                    res.status(500).send('服务器出错').end()
                }else{//成功
                    if(data.length == 0){
                        res.status(400).send('该用户不存在').end()
                    }else{//成功且有值
                        if(data[0].password == password){//对比的是md5后的值
                            //给session赋值
                            req.session['admin_id'] = data[0].ID;
                            //重定向到首页
                            res.redirect('/')
                        }else{
                            res.status(400).send('密码不正确')
                        }
                    }
                }
            })
        })
        //注册register
        router.post('/register',(req,res)=>{
            var username = req.body.userName;
            //将获取的密码转成md5加密形式,而且数据库存的也是加密后的,并且有后缀
            var password = utils.md5(req.body.password+utils.MD5_SUFFIX);
            //注册部分
        })
        return router;
    }

    注册部分由于时间问题没写完,这里跟普通的数据库增加数据一样,只不过是增加了一个md5密码加密

    路由部分的user.js   news.js跟这也一样

    下面是模板部分。这里用的是.art扩展名,index.art是首页包含导航部分,其余分别是下属子页面,其中如果js和css代码如果不多,我就直接写在art文件里了,并没有外部引用。

     

    template/login/login.art     

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <!-- 因为这个是login页面,所以每个地址都会默认加上一个login,所以访问页面使用../  -->
        <link rel="stylesheet" href="../css/bootstrap.min.css">
        <link rel="stylesheet" href="./login.css">
        <title>登录</title>
    </head>
    <body>
        <canvas id="can"></canvas>
        <div class="box center_middle">
            <form class="center_middle loginForm" action="/login" method="post">
                <div class="form-group row">
                    <label for="userName" class="col-sm-2 col-form-label">账号:</label>
                    <div class="col-sm-10">
                    <input type="text" class="form-control" id="userName" name="userName" placeholder="请输入账号" required>
                    </div>
                </div>
                <div class="form-group row">
                    <label for="password" class="col-sm-2 col-form-label">密码:</label>
                    <div class="col-sm-10">
                    <input type="password" class="form-control" id="password" name="password" placeholder="请输入密码" required>
                    </div>
                </div>
                <div class="form-group row">
                    <div class="col-sm-2"></div>
                    <div class="col-sm-10">
                        <div class="form-check">
                            <input class="form-check-input" type="checkbox" id="gridCheck1">
                            <label class="form-check-label" for="gridCheck1">
                                记住密码
                            </label>
                            <a href="#">忘记密码!</a>
                        </div>
                    </div>
                </div>
                <div class="form-group row">
                    <div class="col-sm-8 offset-sm-4">
                    <button class="btn btn-primary" type="submit">登录</button>
                    &nbsp;&nbsp;&nbsp;&nbsp;
                    <button type="" class="btn btn-primary" id="register" onclick="return false">注册</button>
                    </div>
                </div>
            </form>
    
            <!-- 注册 -->
            <form class="center_middle registerForm" action="/login/register" method="post" onsubmit="return false">
                <div class="form-group row">
                    <label for="name" class="col-sm-3 col-form-label">账号:</label>
                    <div class="col-sm-9">
                    <input type="name" class="form-control" id="userName" name="userName" placeholder="请输入账号" required>
                    </div>
                </div>
                <div class="form-group row">
                    <label for="password" class="col-sm-3 col-form-label">密码:</label>
                    <div class="col-sm-9">
                    <input type="password" class="form-control" id="password" name="password" placeholder="请输入密码" required>
                    </div>
                </div>
                <div class="form-group row">
                    <label for="password2" class="col-sm-3 col-form-label">确认密码:</label>
                    <div class="col-sm-9">
                    <input type="password" class="form-control" id="password2" placeholder="请再次输入密码" required>
                    </div>
                </div>
                <div class="form-group row">
                    <div class="col-sm-9 offset-sm-3">
                    <button type="submit" class="btn btn-primary" id="back">返回</button>
                    &nbsp;&nbsp;&nbsp;&nbsp;
                    <button class="btn btn-primary" id="registerSave">注册</button>
                    </div>
                </div>
            </form>
        </div>
        
        <script src="../js/jquery.min.js"></script>
        <script src="../js/bootstrap.min.js"></script>
        <script src="../js/dat.gui.js"></script>
        <script src="./login.js"></script>
    </body>
    </html>
    

    template/index.art        可以对应上面的routes/index.js看

    <!doctype html>
    <html lang="en">
        <head>
            <meta charset="utf-8">
            <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
            <link rel="stylesheet" href="/css/bootstrap.min.css">
            <title>Chris_Wang</title>
            <style>
                .main_content {
                    margin-top:56px;
                }
            </style>
        </head>
    <body>
        <div class="container" style="height:3000px">
            <nav class="navbar navbar-expand-lg fixed-top navbar-dark bg-primary">
                <a class="navbar-brand" href="https://blog.csdn.net/Chris__wang" target="_blank">Chris_Wang</a>
                <div class="collapse navbar-collapse" id="navbarSupportedContent">
                <ul class="navbar-nav mr-auto">
                    <li class="nav-item active nav_item_">
                    <a class="nav-link" href="/">用户信息</a>
                    </li>
                    <li class="nav-item nav_item_news">
                    <a class="nav-link" href="news">新闻列表</a>
                    </li>
                    <li class="nav-item dropdown">
                    <a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
                        公司简介
                    </a>
                    <div class="dropdown-menu" aria-labelledby="navbarDropdown">
                        <a class="dropdown-item nav_item_news_about" href="about">关于我们</a>
                        <a class="dropdown-item" href="#">企业风采</a>
                    </div>
                    </li>
                </ul>
                <form class="form-inline my-2 my-lg-0">
                    <input class="form-control mr-sm-2" type="search" placeholder="Search" aria-label="Search">
                    <button class="btn btn-outline-success my-2 my-sm-0" type="submit">Search</button>
                </form>
                </div>
            </nav>
            <div class="main_content">
                <!--根据路由跳转时传递的path数据,确定要加载的是哪个页面文件,后面的$data是传递给子组件的数据,其中routes/news.js文件处传递过data数据-->
                {{include $data['path'] $data}}
            </div>
        </div>
      </body>
    </html>
    <script src="/js/bootstrap.min.js"></script>
    <script>
        //导航当前页高亮显示
        var items = $('.nav-item');
        var pathname = window.location.pathname
        var pattern = new RegExp("/", "g");
        var activeName = pathname.replace(pattern,'');
        for(var i = 0; i < items.length; i++){
            $(items[i]).removeClass('active')
        }
        $('.nav_item_'+activeName).addClass('active')
    </script>

    注:代码中部分类名如mr-sm-2  my-2等是bootstrap4里面新增加的实用性工具类,详见

    https://v4.bootcss.com/docs/4.0/getting-started/introduction/

    中文文档:https://cloud.tencent.com/developer/doc/1018

    未完待续。。。

    展开全文
  • node.js登陆注册案例

    2018-02-14 21:00:44
    node.js结合mangodb建立登录注册示例项目,包括express,模块化架站,express-session使用等
  • 案例包含4部分:(1)HTML部分;(2)ajax部分;(3)JavaScript部分;(4)node服务器部分。另外,因为牵涉到服务器,所以这里没法“效果预览”。 执行过程为: (1)在浏览器地址栏输入网址,向node服务器发送...
  • 微信小程序开发-猫眼电影含node后端案例源码.zip
  • node+express项目案例(一):https://blog.csdn.net/Chris__wang/article/details/90738551 node+express项目案例(二):https://mp.csdn.net/postedit/90738794 node+express项目案例(三):...
  • node之实现登录注册分页小案例(node+vue+elementUI+axios+mysql) 文章: https://blog.csdn.net/qq_38903404/article/details/108397843
  • 本文档需要使用ultra-edit代开,里面实现了linux kernel设备节点的全部代码,可以直接在linux 上编译验证。此节点是file类型,实现对file的buffer读写操作。可以基于此模式增加自己的硬件设备节点。...
  • 微软、IBM、思科、Netflix、PayPal……这些只是少数几家在产品中使用Node.js软件的顶尖公司。自2009年首次发布以来,JavaScript环境越来越受欢迎。为什么呢?这是因为Node.js使用起来非常容易。此外,Node.js还允许...
  • 包含目前为止最新的node环境,完事所附带的代码是访问百度首页,填入搜索词之后,点击搜索按钮,进行搜索,完事点击固定广告链接
  • node.js的实战代码,是个个人博客。包含框架,数据库的讲解。干货
  • 基于node.js并结合express和art-template制作的一个增删查改小案例——人员信息管理系统,其中数据存储在文件中,没有用到数据库。
  • 微信小程序开发-涂鸦(含node后端)案例源码.zip
  • Node.js案例大全)《 Node.js企业级应用开发实战》源码 :第一个Node.js应用 :deepStrictEqual示例 :指定编码 :切分长度 :连接 :比较长度 :解码 :编码 :监听事件 :lambda方式监听事件 :异步...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 67,123
精华内容 26,849
关键字:

node案例