精华内容
下载资源
问答
  • Node实战—幼教平台

    2020-04-17 09:25:52
    项目初始化 初始化项目结构 配置babel 新建main.js babel高阶语法转化演示 配置项目依赖 新建public,views文件夹, 引入静态资源 集成静态资源文件 配置全局路径 配置新的模板引擎 配置全局路由 ...
  • Node实战——幼教平台

    2020-12-03 20:58:07
    实现幼教平台的幼教资源部分,实现了文章的展示修改,用户的权限控制等。主要熟悉Node中前后端交互以及和数据库进行交互
  • node开发实战

    2018-01-24 14:25:28
    node实战开发,知识点全面,从环境搭建到实战演练,教你全面运用node.js
  • 在使用 Node.js 编写一个完整的项目时,程序中往往需要用到一些可配置的变量,从而使得程序能在不同的环境中运行,而众所周知,在实际的项目会存在多个不同的环境,不同的环境下,一些配置是不相同的,如何在不同的...
  • 本篇文章主要介绍了借助node实战JSONP跨域实例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
  • node实战书中配套案例

    2014-08-19 14:15:25
    node实战书中配套案例,感觉还不错,可以在本地环境运行调试,帮助更好的掌握node技术
  • 整理的一套常用的三个框架vue核心还有node实战和面试技巧等等学过js的可以看看来,里面有vue,vue实战,bootstrap框架,jQuery EasyUI,angular.js,Ajax,16reactjs拓展,微信小游戏入门与实战 刷爆朋友圈,Vue2.5...
  • 2017免费node.js入门到实战教程.txt 视频教程2017免费node.js入门到实战教程.txt 视频教程2017免费node.js入门到实战教程.txt 视频教程2017免费node.js入门到实战教程.txt 视频教程
  • Node.js 实战

    2017-08-12 10:48:39
    Node.js 实战(双色)》通过8 个实例讲解了Node.js 在实战开发中的应用,涉及Node.js 常用框架、非关系型数据库、关系型数据库、运维命令和网络安全等内容。章节按照从简单到复杂的难度排序,每一章都通过一个有趣...
  • Koa与Node.js开发实战(完整版),是完整版,自己亲测,191M,不是从第六章开始的
  • 技术-胖Koa+Node商城实战
  • Node从入门到实战,,全部视频教程及源码。百度云盘连接
  • Node-RED从入门到实战教程

    千人学习 2020-10-19 11:20:12
    为了能够让小伙伴们快速了解本门课程的结构,本门课程从以下几个方面展开: Node-RED入门 Node-RED安装与配置 Node-RED教学实战 Node-RED的优势与不足 Node-RED能为我们带来什么 Node-RED总结与展望
  • Node.js开发实战详解完整版pdf
  • Node.JS项目实战网盘系统 全栈开发工程师,现职于北京一家学院的全栈教学...

    扫码下载「CSDN程序员学院APP」,1000+技术好课免费看

    APP订阅课程,领取优惠,最少立减5元 ↓↓↓

    订阅后:请点击此处观看视频课程

     

    视频教程-Node.JS项目实战网盘系统-Node.js

    学习有效期:永久观看

    学习时长:213分钟

    学习计划:4天

    难度:

     

    口碑讲师带队学习,让你的问题不过夜」

    讲师姓名:李游Leo

    CEO/董事长/总经理

    讲师介绍:全栈开发工程师,现职于北京一家学院的全栈教学主任。 8年前端开发经验、4年移动端开发经验、4年UI设计经验、3年一线教学经验。 精通Node.JS、PHP、Javascript开发等多种开发技术,曾任职于时趣、百度、乐视,拥有丰富的企业级系统开发经验,长期参与一线项目开发和项目管控,对HTML5移动端互联网技术及生态体系有深刻理解。

    ☛点击立即跟老师学习☚

     

    「你将学到什么?」

    Node.JS是一套使用JavaScript语言的后台。它执行Javascript的速度非常快,性能非常好。是近几年来火的公司首选后台语言之一,同时也是前后台人员争先恐后学习的后台语言。 网盘,又称网络U盘、网络硬盘,是互联网在线的储存服务。本课程使用Node搭建一个后台服务,从无到有,一步一步教你如何去制作一个自己的网盘。

     

    「课程学习目录」

    第1章:Node.JS快速项目实战网盘系统 - 课时预览
    1.Node.JS快速项目实战网盘系统 - 课时预览
    第2章:Node.JS快速项目实战网盘系统 - 精讲部分
    1.实战教学 - 网盘系统 - 第一部分
    2.实战教学 - 网盘系统 - 第二部分
    3.实战教学 - 网盘系统 - 第三部分
    4.实战教学 - 网盘系统 - 第四部分
    第3章:Node.JS模版 - ejs模版教程视频
    1.Node.JS - ejs模版使用课程

     

    7项超值权益,保障学习质量」

    • 大咖讲解

    技术专家系统讲解传授编程思路与实战。

    • 答疑服务

    专属社群随时沟通与讲师答疑,扫清学习障碍,自学编程不再难。

    • 课程资料+课件

    超实用资料,覆盖核心知识,关键编程技能,方便练习巩固。(部分讲师考虑到版权问题,暂未上传附件,敬请谅解)

    • 常用开发实战

    企业常见开发实战案例,带你掌握Python在工作中的不同运用场景。

    • 大牛技术大会视频

    2019Python开发者大会视频免费观看,送你一个近距离感受互联网大佬的机会。

    • APP+PC随时随地学习

    满足不同场景,开发编程语言系统学习需求,不受空间、地域限制。

     

    「什么样的技术人适合学习?」

    • 想进入互联网技术行业,但是面对多门编程语言不知如何选择,0基础的你
    • 掌握开发、编程技术单一、冷门,迫切希望能够转型的你
    • 想进入大厂,但是编程经验不够丰富,没有竞争力,程序员找工作难。

     

    「悉心打造精品好课,4天学到大牛3年项目经验」

    【完善的技术体系】

    技术成长循序渐进,帮助用户轻松掌握

    掌握Node.js知识,扎实编码能力

    【清晰的课程脉络】

    浓缩大牛多年经验,全方位构建出系统化的技术知识脉络,同时注重实战操作。

    【仿佛在大厂实习般的课程设计】

    课程内容全面提升技术能力,系统学习大厂技术方法论,可复用在日后工作中。

     

    「你可以收获什么?」

    网盘,又称网络U盘、网络硬盘,是互联网在线的储存服务。本课程使用Node搭建一个后台服务,从无到有,一步一步教你如何去制作一个自己的网盘。

     

    展开全文
  • Node.js 硬实战:115 个核心技巧》是一本面向实战Node.js 开发进阶指南。作为资深专家,《Node.js 硬实战:115 个核心技巧》作者独辟蹊径,将着眼点放在Node.js 的核心模块和网络应用,通过精心组织的丰富实例,...
  • Node.js实战项目(一)----首页渲染

    千次阅读 2018-03-29 11:38:37
    我要用Node来做一个分享读后感的网站,这个Node实战系列就是一个记录。1、项目初始化把写好的前端代码拷进项目文件夹,然后初始化,以及安装各种包,这里我用的是yarn 和npm是一样的yarn init yarn add express这就是...

    我要用Node来做一个分享读后感的网站,这个Node实战系列就是一个记录。

    1、项目初始化

    把写好的前端代码拷进项目文件夹,然后初始化,以及安装各种包,这里我用的是yarn 和npm是一样的

    yarn init
    yarn add express

    这就是初始化好了的项目文件目录结构,入口文件是app.js

    2、优化目录结构

    项目初始化后,项目目录依旧很乱,这不符合我们的要求,所以我们要对项目的目录结构进行优化,

    1、引入express框架。

    2、新建views作为存放前端视图的文件夹。

    3、新建public作为存放静态文件的文件夹。

    var express = require('express');
    var app = express();
    
    //设置视图模板引擎
    app.set('views', './views');
    app.set('view engine','ejs');
    //静态文件存放目录
    app.use('/static',express.static('public'));
    整理后的文件目录结构为

    这样就清爽多了

    3、首页渲染

    这里我选用的是ejs作为前端模板,所以index.html要改为.ejs后缀

    (views文件夹)

    顺便一提,在views中,我把前端页面分为两部分,一是纯粹的展示性的页面放进article文化夹中,另一个是涉及提交数据等的页面,我放进admin文件夹中。

    改好文件后缀之后还需要改的就是代码中所链接文件的目录。

    之前我把所有静态文件都放进了public文件夹中,又在代码中设置了public目录的路径为'/static'

    所以index.ejs里的文件路径也要改了

    <link rel="stylesheet"href="/css/index.css">
    改为
    <link rel="stylesheet"href="static/css/index.css">

    将文件中的链接路径都修改后,在app.js里增加首页渲染的代码

    var express = require('express');
    var app = express();
    
    //设置视图模板引擎
    app.set('views', './views');
    app.set('view engine','ejs');
    //静态文件存放
    app.use('/static',express.static('public'));
    
    //'/'表根目录
    app.get('/', function (req, res,next) {
        res.render('index');
    });
    
    app.listen(3000);

    在命令窗启动app,'''node app.js',打开浏览器输入127.0.0.1:3000我们就能看到首页被成功渲染出来了






    展开全文
  • Node.js 实战开发:博客系统

    千次阅读 2019-01-22 18:06:09
    三、开发实战 1、构建项目目录结构、安装各种所需要的模块框架等等 npm init npm install --save XXX 2、目录结构 3、创建应用,监听端口 //app.js var express = require("express"); var app = express(); ...

    一、需求分析
    Node.js 实战开发:博客系统
    Node.js 实战开发:博客系统
    Node.js 实战开发:博客系统
    Node.js 实战开发:博客系统
    二、开发工具
    1、NodeJs:基础核心开发语言
    2、express:一个简洁而灵活的nodejs web应用框架,提供一系列强大的特效帮助我们创建各种web应用
    从本质上来说,一个 express 应用就是在调用各种中间件。
    3、mongodb:数据库
    4、第三方模块/中间件
    bodyParser:解析post请求数据
    cookies:读/写cookie
    swig:模板解析引擎
    mongoose:操作mongodb数据
    markdown:markdown语法解析生成模块

    require一个模块,如果是通过npm安装的或者是express内置的模块,直接require(‘模块名’)
    如果是自定义的模块,必须加上相对路径

    三、开发实战
    1、构建项目目录结构、安装各种所需要的模块框架等等
    npm init
    npm install --save XXX
    2、目录结构
    Node.js 实战开发:博客系统

    3、创建应用,监听端口

    //app.js
    var express = require("express");
    var app = express();
    var server = app.listen(8888, function(){
        console.log("Server is running on http://localhost:8888");
    });

    4、用户访问流程
    用户通过URL访问web应用,如:http://localhost:8888
    web后端根据用户访问的URL处理不同的业务逻辑
    5、路由绑定
    通过app.get()或ap.post()等方法可以把一个url路径和一个/N个函数进行绑定

    app.get( ‘/’,function(req,res,next){
        //req:request对象,保存客户端发送请求的一些数据  === http.request
        //res:response对象,服务端输出对象,提供了一些服务器端输出的相关方法  === http.response
        res下面有write、end、statusCode、setHeader、writeHead等属性和方法
        //next:方法,用于执行下一个和路径匹配的函数
    } )

    6.1、直接内容输出
    通过res.send(string)发送内容至客户端
    6.2、通过模板渲染内容
    res.render():将会根据views中的模板文件进行渲染
    如果不想使用views文件夹,想自己设置文件夹名字,那么app.set("views","aaaa");
    注:如果想写一个快速测试页,当然可以使用res.send(),send这个函数将根据内容,自动帮我们设置了Content-Type头部和200状态码。send()只能用一次,和end一样。和end不一样在哪里?能够自动设置MIME类型。
    7、模板的使用
    后端逻辑和页面表现分离-即前后端分离
    8、模板的配置

    var swig = require('swig');
    app.engine('html',swig.renderFile);
    //定义当前应用所使用的模板引擎,使用swig.renderFile方法解析为后缀为html的文件
    app.set('views','./views');
    //设置模板存放目录
    app.set('view engine','html');
    //注册模板引擎
    swig.setDefault({cache:false});

    9、设置静态文件托管目录
    css、img、js等都通过下面的方法进行托管
    app.use('/public',express.static(dirname+'/public'));
    在public目录下划分并且存放好相关的静态资源文件
    意思是:当用户访问的url以/public开始,那么直接返回对应
    dirname+'/public'下的文件

    10、前后端工作流程:
    用户发送http请求 -> 这个请求是一个url -> 后端解析url,提取信息 -> 找到匹配的规则 -> 满足规则以后,执行绑定函数,返回对应内容给用户

    划分:静态文件、动态文件处理两部分
    静态文件:
    访问/public下的文件 -> 静态文件 -> 直接读取指定目录下的文件,直接渲染,返回给用户
    动态文件:
    处理业务逻辑,加载模板,解析模板 -> 返回数据给用户
    通过路由匹配来获取指定文件内容

    11、模块划分
    根据功能进行模块划分
    前台模块 main.js
    后台管理模块 admin.js
    API模块(页面使用ajax请求的模块)api.js
    app.js:整个应用的入口文件

    //使用app.use()进行模块划分
    app.use('/admin',require('./router/admin'));  //请求admin.js,当url匹配都/admin,就会请求./router/admin这个下面的admin.js文件,下面类似
    app.use('/api',require('./router/api'));  //请求api.js
    app.use('/',require('./router/main'));  //请求main.js
    
    admin.js
    let express = require('express');
    let router = express.Router();
    router.get('/',(req,res,next)=>{
        res.send('admin');
    })
    module.exports = router;

    12、数据库连接、表结构Schema定义、Model创建
    Node.js 实战开发:博客系统

    进入到mongoDB安装目录下的bin目录,执行命令:
    mongod --dbpath=D:\妙味课堂文件夹\190122Nodejs开发博客系统\db --port=27017
    定义数据库存放位置和端口号
    然后连接数据库,这里通过可视化界面工具来连接数据库:Robomongo软件来连接

    13、连接数据库成功之后,在schemas文件夹下,新建用户表结构,user.js,定义用户的表
    但是这里不是直接操作这个表结构的,而是通过model模型类来对表进行增删改查,
    model模型类:可以理解成对数据操作的封装,Model中封装对数据进行处理的逻辑业务。

    14、ajax发送请求的url地址:url : '/api/user/register',发送信息到后台,后台进行接收前台传过来的数据

    ‘api/user/register’ 是解析router配置的第一级路径'/api'的,然后在二级router下再匹配对应的 ‘user/register’

    对应api.js文件下的 '/user/register' 路由
    这里使用post请求,接收前端传递过来的数据,使用body-parser中间件
    使用:

    //在入口文件app.js里面:
    //加载body-parser,用来处理post提交过来的数据
    var bodyParser = require('body-parser');
    //bodyparser设置
    app.use( bodyParser.urlencoded({extended: true}) );
    这样在模型类api.js里面,通过req.body就可以获取到前端传递过来的值
    router.post('/user/register',(req,res,next)=>{
        console.log(req.body);  //{ username: 'xiaoxiao', password: '11', repassword: '11' }
            res.json(responseData); //将responseData对象转为json格式,返回给前端
    })
    就可以获取到post提交过来的数据,
    反正前端通过post提交表单数据,那么后端就可以通过req.body来获取到该数据
    数据的key值是input表单的name值,value值是用户输入的值
    
    //查询数据库中相同用户名和密码的记录是否存在,如果存在则登录成功
    

    15、获取到了前台传递过来的数据之后,后台再进入数据库进行操作,分2种情况:
    注册:此时,数据库如果有该信用户名,说明数据库已经存在,则返回信息给前端,提示用户名已经存在
    数据库如果没有注册信息,则需要把注册信息存入数据库,提示前台注册成功
    这里面就涉及到了对数据的查找,可以使用find或者findOne进行查找
    没有数据还要执行存储使用save进行操作

    16、
    Request Headers:是浏览器向服务器发送请求的时候,传递给服务端的数据
    Response Headers:是服务器发传递给客户端的数据

    17、渲染模板的同时带入数据
    res.render('admin/index',{
    userCookie:req.userCookie //userCookie可以直接带入到模板里面,使用{{}}就可以获取到数据
    })

    18、模板的使用
    在index页面引入layout页面:{% extends 'layout.html' %}
    在index页面重写layout页面内容

    layout页面需要被重写的内容使用:{%block main%}{%endblock%}代替
    index页面,使用语法:
    {% block main %}
    //这里面是重写的内容
    {% endblock %}
    即把layout页面需要被重写的内容剪切到index页面,然后各自用语法代替,语法如上所示

    19、各自路径的设置
    ①、html页面里的href路径,需要写全,即哪个路由下面的某某路径,比如
    <a href="/admin/user">用户管理</a>
    如果是三层,比如:<a href="/admin/category/add">添加分类</a>,那么对应的请求接口为:
    router.get('/category/add')
    ②、与此相对应的,是router下面的路由文件,因为路由文件,比如本身已经命名为admin.js,那么下面请求的接口只需要写router.get('/user')即可
    ③、res.render渲染的模板路径,也要写全,是哪个文件夹下的某某文件,比如:
    res.render('admin/category_add'),后缀名可以不用写
    ④<a href="/admin/category_add">添加分类</a>,跳转到添加分类页
    这种写法默认是get请求,所以处理路由就得使用get进行:router.get('/category_add')
    如果要传递数据过去,在表单里面
    <form action="/admin/category_add" method="POST" role="form"></form>
    就使用router.post('/category_add')
    地址都是/category_add,只不过一个是get请求,一个是post请求
    ⑥⑤

    20、a链接点击实现post方式提交,

    <a href="/admin/category_edit?id={{item._id.toString()}}">修改</a>
    //点击页面会跳转到category_edit,匹配了get和post路由
    router.get('/category_add')、router.post('/category_add')
    //此时,form表单可以不需要写action的url地址,因为还是在当前页,当前页的路由还是/category_add,还是会匹配到对应的路由,执行对应的操作

    对应的form表单:

    <form method="POST" role="form">
        <legend>修改分类</legend>
    
        <div class="form-group">
                <label for="">分类名称</label>
                <input type="text" name="categoryName" value="{{categoryName}}" class="form-control" id="" placeholder="修改分类">
        </div>
        <button type="submit" class="btn btn-primary">提交</button>
    </form>

    post表单用于有前台信息(一般是form表单)传递到后台、其他情况可以使用get请求

    错误集结:
    1、throw new TypeError('Router.use() requires a middleware function but got a ' + gettype(fn))
    这种错误一般是模块没有导出,使用module.exports = 导出即可
    2、Node.js 实战开发:博客系统
    报错:Cannot set headers after they are sent to the client
    nodejs+express中出现这个错误都在路由里,大部分是程序运行了res.xxx之后,后面还有和请求,响应相关的操作造成的.
    主要是程序运行的先后顺序没理解透,也就是nodejs的一大特性 : 异步.初学者特别要注意.
    -- 理解到了nodejs程序运行的先后顺序,这个问题就迎刃而解.
    -- 还有就是res.xxx操作之后最好不要再有代码,就算是打印输出的代码也写在res.xxx之前,

    -- 另外,nodejs程序就算res.xxx响应以后,程序还会继续执行,return下更好.

    3、Error: Failed to lookup view "index" in views directory "/views"
    view模板文件目录找不到
    views错误与否取决你是怎么运行app.js,我使用cmd到指定目录下运行app.js就不会出现这个问题,而使用webstorm直接运行app.js就会出现这个问题。这个应该是文件目录的问题。想要在两种方式下都可以找到views的方法是使用:

    
    var path = require('path');
    app.set('views', path.join(__dirname, 'views'));

    4、报下面的错误
    CastError: Cast to ObjectId failed for value "" at path "_id" for model "Category"
    是因为:submit提交还是在当前页面,路由不变,还是会走router.post('/category_edit'),而form表单加了action="/admin/category_edit",所以估计是重复报错,删掉form表单的action就行了;
    以后注意:如果提交的页面还是在当前页面,那么就不用加action了,当前页面不变,路由自然就会继续执行

    转载于:https://blog.51cto.com/9161018/2345539

    展开全文
  • Node.js实战项目–简单的项目发布系统 本章项目是使用express+mongodb制作一个简单的项目发布系统。 项目前准备 安装node.js 安装express 项目结构初始化 第一步:首先新建express站点,express ...

    Node.js实战项目–简单的项目发布系统

    本章项目是使用express+mongodb制作一个简单的项目发布系统。

    项目前准备

    • 安装node.js
    • 安装express
    • 安装mongoDB
    • 安装studio 3T

    项目结构初始化

    • 第一步:首先新建express站点,express publish-system -e -c less,这些我们新建的项目名称是publish-system,选择ejs模板,使用less进行预编译,如果小伙伴们不知道express的这些指令,可以通过express –help查看(插一句,在这之前确保已经安装了 express)
    • 第二步:进入到这个项目目录 cd publish-system
    • 第三步:安装依赖 npm install
    • 第四步:启动这个项目 SET DEBUG=publish-system:* & npm start,这里如果你安装了pm2,也可以使用pm2启动
    • 第五步:命令行会提示在哪个端口监听,如果想改默认端口号,在bin文件夹下面的www文件进行修改
    • 第六步:打开浏览器进行查看 localhost:3000(默认)

    注册页面+功能实现

    【1】配置注册页面的路由
    关于系统中和用户的相关路由配置都写的routes文件夹下面的users.js中
    
    var express = require('express');
    var router = express.Router();
    
    /* GET users listing. */
    router.get('/', function(req, res, next) {
      res.send('respond with a resource');
    });
    
    //注册
    router.get('/register',function(req,res,next){
      res.render('user/register');
    });
    //注册的最好选用post方法,此处先用get做演示用
    
    module.exports = router;

    注意:
    app.js文件中引入了routes中的users.js,var usersRouter = require(‘./routes/users’);并且使用app.use()将应用挂载到app应用上app.use(‘/users’, usersRouter);所以在访问register这个路径时就要变成/users/register

    【2】完成注册页面
    页面很多,所以我们在views下面新建user文件夹,将和用户相关的页面都放在user中
    然后在views/user下面新建register.ejs书写注册的页面,页面采用的bootstrap
    

    register.ejs页面中的代码

    
    <!DOCTYPE html>
    <html lang="zh-CN">
    <head>
      <meta charset="utf-8">
      <meta http-equiv="X-UA-Compatible" content="IE=edge">
      <meta name="viewport" content="width=device-width, initial-scale=1">
      <!-- 上述3个meta标签*必须*放在最前面,任何其他内容都*必须*跟随其后! -->
      <meta name="description" content="register">
      <meta name="author" content="pangtong">
      <title>注册</title>
      <!-- Bootstrap core CSS -->
      <link href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet">
      <!-- Custom styles for this template -->
      <link href="/stylesheets/user/register.css" rel="stylesheet">
      <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
      <!--[if lt IE 9]>
      <script src="https://cdn.bootcss.com/html5shiv/3.7.3/html5shiv.min.js"></script>
      <script src="https://cdn.bootcss.com/respond.js/1.4.2/respond.min.js"></script>
      <![endif]-->
    </head>
    
    <body>
    <div class="container">
      <form class="form-signin">
        <h2 class="form-signin-heading">请注册</h2>
        <label for="username" class="sr-only">用户名</label>
        <input type="text" name="username" id="username" class="form-control"    
        placeholder="请输入用户名" required autofocus>
        <label for="pwd" class="sr-only">密码</label>
        <input type="password" name="pwd" id="pwd" class="form-control"   
        placeholder="请输入密码" required>
        <button class="btn btn-lg btn-primary btn-block" type="submit">注册</button>
      </form>
    </div>
    </body>
    </html>
    

    样式、图片和js都放在public文件夹下面,register对应的css内容如下,有需要可以自行修改

    /*注册页面样式*/
    body{
        background:#e5e5e5;
    }
    .container{
        width:400px;
        margin:300px auto;
        background:#fff;
        border-radius:10px;
        -webkit-border-radius:10px;
        -o-border-radius:10px;
        -moz-border-radius:10px;
        -ms-border-radius:10px;
        box-shadow:3px 3px 10px #000000;
        text-align:center;
    }
    .form-signin .form-signin-heading{
        margin:20px auto;
        font-weight:bold;
    }
    .form-signin .form-control {
        display:block;
        width:350px;
        margin:20px auto;
        height:auto;
        -webkit-box-sizing: border-box;
        -moz-box-sizing: border-box;
        box-sizing:border-box;
        padding:10px;
        font-size:16px;
    }
    .form-signin .form-control:focus {
        z-index:2;
    }
    .form-signin input[type="txt"] {
        border-bottom-right-radius: 0;
        border-bottom-left-radius: 0;
    }
    .form-signin input[type="password"] {
        border-top-left-radius: 0;
        border-top-right-radius: 0;
    }
    .form-signin .btn-block{
        display:block;
        width:350px !important;
        margin:30px auto;
    }
    

    现在通过在自己电脑输入http://localhost:3000/users/register可查看到注册页面

    注册页面

    【3】注册页面功能的实现
    首先获取到注册中请求的用户名和密码

    register.ejs中的form表单要指定提交方法和提交到哪个页面
    register

    routes文件夹下users.js下面输入注册的路由

    var express = require('express');
    var router = express.Router();
    
    /* GET users listing. */
    router.get('/', function(req, res, next) {
      res.send('respond with a resource');
    });
    
    //注册
    router.get('/register',function(req,res,next){
      res.render('user/register');
    });
    router.post('/register',function(req,res,next){
      //获取请求到的用户名和密码
        console.log(req.body.username);
        console.log(req.body.pwd);
        res.send("注册成功");
    });
    
    module.exports = router;
    

    测试效果,在localhost:3000/users/register的注册页面中输入用户名xiaolaofu,密码123456,点击注册,可以在命令行看到打印出来的用户名和密码
    这里写图片描述
    这里写图片描述
    这里写图片描述

    下面问题来了,如果能将注册的数据保存在数据库中呢?

    首先,express是一个MVC类型的框架,V可以理解为views视图层,C可以理解为routes,至于M,我们在项目文件下新建一个model文件夹来绑定数据

    在model文件夹下面新建User.js

    //首先引入mongoose
    var mongoose = require('mongoose');
    //连接本地数据库
    mongoose.connect('mongodb://localhost/user');  //链接本地的user数据库
    mongoose.Promise = global.Promise;
    
    //定义一个schema
    var userSchema = mongoose.Schema({
        name:String,
        pwd:Number
    })
    
    //创建一个model
    //把schema转换为一个model,使用mongoose.model(modelName, schema) 函数
    var User = mongoose.model('User',userSchema);
    
    module.exports = Student;
    
    展开全文
  • Node.js入门
  • Node+Vue实战项目

    万次阅读 多人点赞 2018-07-31 23:42:09
    一、Node+Vue实战项目 1.1 创建Node项目、Vue项目 mkdir classweb cd classweb/ express server vue init webpack vueclient . |-- server | |-- app.js | |-- bin | |-- node_modules | |-- package-lock....
  • 一本介绍web开发框架koa的书,Node.js诞生于2009年,到本书出版时已经有近10个年头。它扩充了JavaScript的应用范围,使JavaScript也能像其他语言一样操作各种系统资源,因此,前端工程化开发的大量工具都开始运行在...
  • redux+react+router+node.js

    2018-09-03 15:15:30
    redux+react+router+node.js(redux+react router+node.js全栈开发.doc)
  • 跟着《Node.js开发指南》,跟着跟着跟丢了,我是个小白,学习node差不多两周了,现在在学习express,但是他书上的有些看不懂,也不明白是什么意思,像用express -t ejs microblog建立工程后的app.js怎么来的,工程建...
  • 资源名称:Node.js硬实战115个核心技巧内容简介:《Node.js 硬实战:115 个核心技巧》是一本面向实战Node.js 开发进阶指南。作为资深专家,《Node.js 硬实战:115 个核心技巧》作者独辟蹊径,将着眼点放在Node.js ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 54,264
精华内容 21,705
关键字:

node实战