nodejs留言板的一些总结

Nodejs 实战开发留言板案例 Nodejs 实战开发留言板案例 准备第三方包 express art-template body-parse 以上第三方包需要安装到你的项目中 npm install express -s npm install art-template -s npm install body-parse -s index.html 代码如下 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"& 阅读详情
url编码
  • 在nodejs访问url中有中文时,要用全局函数encodeURIComponent(string) 对其进行编码, (html的链接或提交表action地址中没有这个需求),如http://localhost:3000/小明/家乡 这个链接中,为/:name/:title格式,在nodejs中就如要做如下处理。如果如做处理,则在IE浏览器中会有问题:“TypeError: The header content contains invalid characters”:
var reUrl = 'http://localhost:3000/' + encodeURIComponent(req.params.name) + '/' + encodeURIComponent(title);
res.redirect(reUrl);
ejs模板
  • 传值给ejs模板时,在render函数里处理:
res.render('index',{
    title:"主页",
    user:req.session.user,
    posts:doc
});

// ejs使用时如:

<%if(user){%>
    <%= user.name%>
<%}%>
  • <%= value%>与<%- value%>区别:
    后者会对value的进行javascript语法解析;如 {value:<b>主页<b/>}; --> <%- value%> 这种情况下,value显示的是加粗的主页两字;
mongoose
  • 对子文档或子数组的update方法
    参考资料
    对于数组里的成员更新,在查找条件里仙进行精确定位,再通过$set方法来更新指定的数据,更新的成员前要加上.$.符号,,如下例子:
booksSchema = new Schema({
    name:String,
    price:String,
    keywords:[String]
})
ReaderSchema = new Schema({
    name:String,
    age:Number,
    books:[boosSchema]
})

这里的booksSchema是书的信息,在Reader人数据结构里,数据库中,booksSchema和ReaderSchema一样有_id属性,如{"_id": "0000", "name": "xx", "age": 20, "books":[{"name": "小明", "price":50, "_id": "0001", "keywords":["science"]}]}

更新的时候如下,更新的是”小明“这本书的keywords数组:

readerModel.update({name:"xxx","books.name":"小明"}, {$set:{"books.$.keywords":["biology"]}},function(err){
    //....
})
  • mongoose对于嵌套数据结构的更新处理示例如下所示:
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
// 对于要存储的结构需要定义
functon Doc(title,id,name,doc){
    this.title = title;
    this.id = id;
    this.name = name;
    this.doc = doc;
}
function Comment(rname,rtime,rcontent){
    this.rName = rname;
    this.rTime = rtime;
    this.rContent = rcontent;
    this.rSubcomments = [];  // 初始化为空
}

// 评论下的回复Schema
var subcommentScema = new Schema({
    srName:String,
    rLvl:String,
    srData:String
});

// 评论的schema
var commentSchema = new Schema({
    rName:String,
    rTime:String,
    rContent:String,
    rSubcomments:[subcommentSchema],
});

var docSchema = new Schema({
    title:String,
    id:Number,
    name:String,
    doc:String,
    comments:[commentSchema]
});

var docsColl = mongoose.model('docs');

var monDb_con = function(callback){
    mongoose.connect('mongodb://host:port/dbname',function(err){
        if(err) throw err;
        else callback(err);
    });
}

var monDb_discon = function(){apparently equivalent
    mongoose.disconnect();
}

// 在主题下面回复,直接保存的doc的comments数组下面
// 调用$push方法来往comments数组添加数据;
Comment.prototype.save = function(callback){
    // 获取文档的title,id
    var com = this;
    monDb_con(function(){
        docsColl.update({id:id},{$push:{comments:{rName:com.rName, rTime:com.rTime, rContent:com.rContent,rSubcomments:[]}},function(err){
            if(err) callback(err);
            else callback(null);
            monDb_discon();
        }}
    });
}


// 在评论下面回复,保存回复到数据空指定的评论下面,保存为数组comments下面的数组rSubcomments
// 下面的rData为subcommentScema对应的结构对象
Doc.prototype.saveSubcomment = function(id,rData,callback){
    monDb_con(function(){
        docsColl.findOne({id:id},{},function(err,doc){
            if(err) callback(err);
            else{
                callback(null);
                // 更新评论里的回复
                var subcom = doc.comments[rData.lvl].subcomments;  // rData.lvl为在第lvl个评论下(0开始算)的回复
                subcom.push(rData);
                doc.save();   // 需要保存
            }
            monDb_discon();
        }
    };
}
RegExp

参考资料
如代码:

str.match(/\?/);  // 查找?
ajax
  • window浏览器兼容:
var xhr = window.ActiveXObject? new ActiveXObject('Microsoft.XMLHTTP') : new XMLHttpRequest();

如果需要在url后面添加参数,则可能需要对url最后一个/符号进行处理,因为windows不会自动不上/而chrome会加上, 所以如果做如下处理:loaltion.toString()+"?p=1", 则chrome不会在?添加上/, 而windows会添加,所以后能出现两条线//的情况,所以需要处理:

var pUrl = localtion.toString();
if(pUrl[pUrl.length-1]=='/') pUrl = pUrl.slice(0,pUrl.length-1);
  • next()函数

    It passes control to the next matching route. 参考资料

    • 也就是说对于所求路劲的处理,如果调用了next则会将控制权转移到下一个匹配的中间件去处理,如上面链接里的例子。
    • 可用于条件判断,如当条件不满足如没有登陆时,则无法访问指定页面;
  • 发送数据

    1. open函数里可以添加参数,如下例所示,在服务器端就可以通过req.query.p来获取p的值;
    2. 发送数据前,对于对象类型,可以通过JSON.stringify()来转换为字符串, 前面加上键名,这样可以在服务器端通过JSON.parse(req.body.postData)来获得解析对象;
xhr.open("post",pUrl+"?p=true",true)
var postData = {};
postData.name = "heli";
postData.data = "......";
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xhr.onreadstatechange = function(){
    if(xhr.readystate==4 && xhr.status==200){
        console.log(xhr.responseText);
        //location.reload();  // 重载页面
    }
}
xhr.send("postData="+JSON.stringify(postData));
nodejs简单留言板 环境要求:expressjs 4.* 功能:包含简单的增、查、删功能 立即下载

相关推荐

留言板案例代码

本案例实现可折叠的留言板,一种是可折叠式的,另一种是浮动的留言板,下面分别价绍.

Nodejs留言板案例总结

1. 案例需求分析 主页 主页一开始呈现的是一部分用户的评论数据, 其中一条评论数据包含的信息有: 用户名, 用户评论内容,评论时间。 页面左上角有一个 发表留言 的按钮,用户点击按钮就会跳转到填写留言的界面 留言页面 用户需要填写的信息有 用户名, 留言内容和发表按钮 用户填写完信息点击发表按钮后, 会自动跳转到主页, 此时主页中的评论部分增加了一条用户刚刚填写的评论内容...

qq_38148024的博客 1462

用Node.实现留言板功能

用nodejs、html 、css实现留言板功能。输入姓名和留言内容,能够实时显示在留言板上面显示留言人,和留言的内容、留言的日期。 //1、/ index.html //2、开发public 目录中的静态资源 // 当请求/public/xxx的时候,读取响应public目录中的具体资源 //3、/post post.html //4、/pinglun // 4.1接受表单提交数据 // 4.2存储表单提交数据 // 4.3让表单重定向到/ // statusCode // setHeader

【Node学习总结-留言本案例】

1. 项目目录 2. app.js 把当前模块所有的依赖项都声明再文件模块最上面。 为了让目录结构保持统一清晰,所以我们约定,把所有的 HTML 文件都放到 views(视图) 目录中 ,我们为了方便的统一处理这些静态资源,所以我们约定把所有的静态资源都存放在 public 目录中 。 //核心模块 var http = require('http') var fs = requir...

FullStackDeveloper0的博客 522

使用Nodejs+BootStrap搭建一个简单的留言板

通过使用Nodejs搭建一个简单的留言板系统,进行留言。是一个初学者练习的好例子

nodejs留言板项目全套流程及其解析

nodejs后端服务器-留言板-bootstarp响应式开发布局

node.js简介+使用+留言板案例

一、node.js是什么? node.js 是一个基于 Chrome V8 引擎的 JavaScirpt 运行环境。 优点:Node.js 使用了一个事件驱动、非阻塞式 I/O 的模型,异步编程,使其轻量又高效。 缺点:单进程,单线程,只支持单核cpu,不能充分的利用多核cpu服务器。一旦这个进程崩掉,那么整个web服务就崩掉了。 二.基本使用 ​ require()引入模块,返回一个模块对象; ​ module.exports()或者exports() 导出一个对象; 例: a.js //导入b var

weixin_45894479的博客 692

RISC-V— 架构基础知识学习

蜂鸟 E200 系列是一个开源的RISC-V 处理器。蜂鸟 E200 系列由中国大陆研发团队开发,用户能够轻松与开发人员取得交流和支持。RI蜂鸟 E200 处理器研发团队拥有在国际一流公司多年开发处理器的经验,使用稳健的Verilog 2001 语法编写的可综合 RTL 代码,以工业级标准进行开发。蜂鸟 E200 的代码为人工编写,添加丰富的注释且可读性强,非常易于理解。

deilt 1万+

Node.js实践与总结

Node.js实践与总结什么是nodejs特点commonjs规范模块化http模块fs模块stream支持cookie安装插件命令 什么是nodejs node.js就是js,是js服务端运行环境runtime,只是借助于Chrome V8引擎,实现js后端编程。 任何一台电脑都可以作为服务器。 注:浏览器是js的前端运行环境runtime 特点 nodejs适用于 I/O 密集型操作,不适用于CPU密集型操作(大量计算) 单线程 非阻塞 I/O 访问文件 网络请求 数据库查询 键盘/鼠标交互

xymspace 1847

子网划分详解

还不会子网划分?看这篇就够了,保姆级教程

m0_47584619的博客 6093

spoon工具的常用基础操作

先创建一个作业,这个作业流程,包括进行设置变量转换,查询结果输出转换,方便后续循环。整个流程写完后,执行作业5_执行整个流程,成功后,可以在数据库查看结果。,新建一个转换,excel表输入然后复制记录到结果,保存转换文件。这三个用户下 都有一张emp表 分别是 三个部门的用户信息。,新建一个数据库连接,变量命名用户名和密码。成功执行后,可以到保存的excel位置进行查看。emp表输入,可以进行预览查看数据有没有过来。输出到一直excel表,运行结果输出。,新建一个转换,拖拽。

qq_43583887的博客 5831

node.js如何实现留言板功能?

node.js实现留言板功能

2301_76669854的博客 1047

keil工程After Build/Rebuild添加带参.exe实现全流程(2):带参调用.exe的几种方法

keil工程After Build/Rebuild添加带参.exe实现全流程(2):带参调用.exe的几种方法。

kevin1499的博客 1617

【Nodejs】留言板案例

文章目录1 统一处理服务器资源:1.1 关于fs.readdir() 文件目录读取:1.2 模板引擎:1.2.1 在node中使用模板引擎:1.2.2 each :2 留言板:2.1 实现功能:2.2 服务器路径:2.3 实现:2.4 实现效果:3 url 核心模块: 1 统一处理服务器资源: var http = require('http'); var fs = require('fs'); var server = http.createServer(); var wwwDir = 'F:/md

1601

光学系统仿真软件:Finesse_(6).噪声分析与优化

在Finesse中,噪声源的定义可以通过在光学元件的参数中添加噪声项来实现。以下是一个简单的示例,展示了如何在激光器和反射镜中定义噪声源。# 定义噪声传递函数# 绘制噪声传递函数plot NTF1在这个例子中,定义了一个噪声传递函数NTF1,描述了激光器L1到反射镜M1的噪声传递过程。plot NTF1命令绘制了噪声传递函数的频谱图。# 定义耦合路径# 绘制耦合噪声频谱图plot C1在这个例子中,定义了一个耦合路径C1,描述了激光器L1和反射镜M1之间的噪声耦合关系。plot C1。

kkchenjj的博客 873

基于 YOLOv26 的高速抛物识别系统:微小目标检测

本文提出了一种基于YOLOv26的高速抛物识别系统,专注于微小目标检测。系统采用多模块协同架构,包括视频预处理、YOLOv26检测、目标跟踪和抛物行为分析等模块。关键技术包括YOLOv26s模型检测、DeepSORT目标跟踪和边缘计算部署。通过构建包含多种抛物类型的专业数据集,并应用数据增强技术提升模型性能。系统实现了车辆检测、微小抛物目标识别、抛物轨迹分析和风险等级评估等功能,可实时检测高速公路上的抛物行为并触发告警,为交通管理提供智能化解决方案。

一键难忘的博客 632

nodejs+express留言板功能实现

留言板 基于nodejs+express+art-template的留言板功能。包含列表界面、添加界面和发送留言功能。 所需类库 直接copy以下package.json 然后直接 npm install 或者yarn install 即可。 package.json所需内容如下。 { "name": "nodejs_message_board", "version": "2021.09", "private": true, "scripts": { "start": "node a

★【World Of Moshow 郑锴】★ 5237

某物data魔改与变种算法还原(含加解密Py纯算)

某物data加解密、设备指纹魔改、变异、自定义加密分析与纯算还原

吴秋霖的博客 1278

Nodejs留言板功能实现

nodejs留言板

zy0815hhh的博客 1539

Windows2008使用-解决漏洞-CVE-2010-2730

随着硬件的升级,操作系统也逐渐进行了版本更新。目前阶段,Windows2016Server、Windows2022Server逐渐成为了以Windows系列的服务器平台系统。对于有些应用而言,由于其业务的固定,可能仍只能运行在Windows2008Server或者Windows2012Server上。有时候我们为安全需要,需要将相关的操作系统涉及的漏洞做修复。最近碰到在一个Windows2008R2 的操作系统漏洞CVE-2010-2730,一顿操作,终于找到了合适的方案,这里分享给大家。

mystonelxj的博客 2313

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

nodeJS做一套留言板

目标: 完成动态交互留言板, 做一套留言版增删改查 搭建服务器基本结构 首页动态渲染 取数据 + 模板 获取数据库的数据 配合模板引擎进渲染 把渲染好页面返回给浏览器 删除留言 前端点击删除按钮,传递给给后台 接收前端传递id, 根据id去删除对应的数据 先把data.json中数据读取出来,转出js数组 从数组中删除 将数组转回json字符串,写回data.json 页面需要重新...

qq_44704740的博客 1098

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

nodeJs留言板 实现

1.两个页面 ①首页 ② 输入留言内容页面 如图: 功能实现: 1.点击‘ 发表留言按钮’ 跳转至 post.html页面输入信息。 2.在post.html页面中,点击 首页 会重新跳回 index.html(注意路径),点击 ‘确认发表’ 会在默认的留言列表中新增,并且跳回首页。 涉及知识点: 1.服务器构建。核心模块 http引入、端口设置 2.url核心模块: 页面的跳转是通过对ur...

qq_41880978的博客 3551

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

nodejs一个简易丑陋的留言板

最近在自学nodejs,记录一下所学。 准备 node_modules和package-lock.json的引入,通过npm install art-template 引入模板引擎。 2.写b.html页面,这个是留言板如图。 <html> <meta charset=utf-8> <title>留言板</title> <body> <a href="/pinglun">发表留言</a> <div&...

weixin_44659053的博客 229

nodejs 留言板案例开发

参数解析方式Express 解析请求参数的几种方式在 Express 中,可以通过多种方式获取客户端发送的请求参数。// 请求示例: GET /search?2. 路由参数 (Route Parameters)从 URL 路径中获取参数:javascript// 路由定义res.send(});

weixin_58026642的博客 903

nodejs koa留言板案例开发

包含功能 登录注册(不开放注册只是用固定的账号信息) 查看列表 查看详情 发布信息 编辑信息 删除信息 项目接口npm init -y npm install koa --save npm istall koa-router --save (旧版本) 或者 npm install @koa/router --save (新版本) npm install bluebird --save npm install koa-ejs --save npm install koa-bodyparser --s

weixin_58026642的博客 303

利用nodejs完成的小小的留言板功能,从文件中读取数据

今天复习了之前利用node写的留言板功能,发现还是不能熟练运用,所以发到论坛上,供以后参考学习。 思路:1,加载静态页面 2,获取表单中的数据 3,提交表单中的数据 4,读取表单中的数据 准备工作:静态页面,css,js; //nodejs var http = require("http"); var fs = require("fs"); var path = requir...

奋斗小强的博客 1914
上一篇: css基础学习
下一篇: mongodb操作
呵离
博客等级 码龄12年 18粉丝 86原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值