node -v
ctrl+c c
var http=require(‘http’);
var server=http.createServer(function(req,res,next){
//业务逻辑 })
server.listen(3000,function(err){if(!err){console.log(‘服务器运行在3000端口上’)}})
req.url
req:全称request请求对象
res:全称 response响应对象
res.write(‘hello world’);
res.end()
表示浏览器(客户端)请求页面图标
if(req.url==’/favicon.ico’){
fs.readFile(‘图标地址’,function(err,data){
res.write(data);
res.end()
})
}
var fs=require(“fs”);
fs.readFile(‘./file.json’,’utf-8’,function(err,data){
If(!err){
// data即为读取内容
}
})
fs.readFileSync(‘’./file.json”,”utf-8”);
异步:在一件事情没有做完,可以接着做另外一件事 非阻塞
同步:一件事情没有做完,就不可以做下一件事 阻塞。
同步案例:for循环语句,alert() 等
异步案例:定时器,ajax异步请求
fs.writeFile(‘./file.txt’,’abc’,function(err){ })
querystring.parse(‘user=tom?pass=123456’)
url.parse(req.url,true)
res.writeHead(200, {
'Content-Type': 'application/json;charset=utf-8',
'Access-Control-Allow-Origin': '*'
})
npm是包管理工具
npm install jquery@版本号 或者 npm install jquery
node_modules
npm init
npm 下载资源服务器在国外,cnpm下载资源服务器为国内淘宝镜像 。 一般下载用cnpm
module.exports={}
var module=require(‘模块名或路径’)
module.exports={
parse:function(str,foo){
var arr=str.split('?');
var pathname=arr[0]
if(foo){
var arr1=arr[1].split('&');
var query={};
for(var i=0;i
1.npm login 登录
username:用户名
password:密码
email:邮箱
2.npm publish 发布
var str=””
req.on(‘data’,function(thunk){
str+=thunk;
})
req.on(‘end’,function(){
})
历史 参数保留在浏览器历史中。 参数不会保存在浏览器历史中。
对数据长度的限制 是的。当发送数据时,GET 方法向 URL 添加数据;URL 的长度是受限制的(URL 的最大长度是 2048 个字符)。 无限制。
安全性 与 POST 相比,GET 的安全性较差,因为所发送的数据是 URL 的一部分。
在发送密码或其他敏感信息时绝不要使用 GET ! POST 比 GET 更安全,因为参数不会被保存在浏览器历史或 web 服务器日志中。
可见性 数据在 URL 中对所有人都是可见的。 数据不会显示在 URL 中。
1. get是从服务器上获取数据,post是向服务器传送数据。
2. GET请求把参数包含在URL中,将请求信息放在URL后面,POST请求通过request body传递参数,将请求信息放置在报文体中。
3. get传送的数据量较小,不能大于2KB。post传送的数据量较大,一般被默认为不受限制。但理论上,IIS4中最大量为80KB,IIS5中为100KB。
4. get安全性非常低,get设计成传输数据,一般都在地址栏里面可以看到,post安全性较高,post传递数据比较隐私,所以在地址栏看不到, 如果没有加密,他们安全级别都是一样的,随便一个监听器都可以把所有的数据监听到。
5. GET请求能够被缓存,GET请求会保存在浏览器的浏览记录中,以GET请求的URL能够保存为浏览器书签,post请求不具有这些功能。
6. HTTP的底层是TCP/IP,GET和POST的底层也是TCP/IP,也就是说,GET/POST都是TCP链接。GET和POST能做的事情是一样一样的。你要给GET加上request body,给POST带上url参数,技术上是完全行的通的。
7.GET产生一个TCP数据包,对于GET方式的请求,浏览器会把http header和data一并发送出去,服务器响应200(返回数据);POST产生两个TCP数据包,对于POST,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据),并不是所有浏览器都会在POST中发送两次包,Firefox就只发送一次。
一.首先创建app.js文件如下:
//加载express模块
var express=require("express");
// 创建app服务器 等同于 http.createServer()
var app=express();
//加载路由模块
var IndexRouter=require('./routes/index.js');
var RouterHome=require('./routes/home.js')
//导入path模块(处理路径的模块)
var path=require("path");
//加载ejs模板
var ejs=require("ejs");
//配置 视图文件位置
app.set("views",path.join(__dirname,"views"));
//配置 视图文件引擎
app.set('view engine','ejs')
//设置静态资源文件位置
app.use('/public',express.static(path.join(__dirname,'public')))
//指定ip或域名 (本地ip:127.0.0.1等同于本地域名localhost)
var ip='127.0.0.1';
//指定端口
var port=3000;
//app服务器监听端口
app.listen(port,ip,function(){ //app服务器监听端口
console.log("服务器运行在http://"+ip+":"+port)
});
//配置 一级路由规则
app.use('/',IndexRouter)
app.use('/a',RouterA)
//404处理
function fn(req,res){ // app添加 get请求根路径的路由
// res.send("hello world");// 向前台输出
console.log(req.url)
res.write("404");
res.end()
}
二.安装依赖 express ,ejs
三.创建views(视图文件),public(静态资源文件),routes(路由文件)文件夹
四.routes下创建路由文件index.js,a.js
//加载express模块
var express = require('express');
//创建router对象
var router = express.Router();
//配置 二级路由
router.get('/', function(req, res, next) {
res.render('index')
});
//导出路由模块
module.exports = router;
<% a=100 %>
<%= a %>
<% include ./head.ejs %>
水果名 | 价格 | 产地 |
---|---|---|
<%= list[a].name %> | <%= list[a].price %> | <%= list[a].address %> |
2.path.normalize()格式化路径 注意'..' 和 '.'
3.path.join() 连接路径
4.path.resolve() 转换为绝对路径
当前文件所在目录
当前文件路径
var obj=path.parse(str);
请写出obj.base,obj.ext,obj.dir,obj.name的值?
obj.base==‘a.html’
obj.ext==’.html’
obj.dir==’c:\\wamp\\www\\’
obj.name==’a’
‘/test/test1/abc/’
5.console.log(path.join('/test', 'test1', 'home/api', 'tab', '..'));输出结果?
‘/test/test1/home/api/’
cnpm install express-generator -g
或者
npm install express-generator -g
express -e test
app.js 是主文件
package.json 是配置文件
bin启动文件
public静态资源文件
routes路由
views是视图文件
node_modules 项目依赖
mongod --dbpath c:/data/db --port 27017
mongo --port 27017
show dbs
show collections
db.user.insert({user:’tom’,pass:123456});
db.user.find()
db.user.find({age:{$gt:18,$lt:20}})
db.user.update({name:’李四’},{$set:{sex:’女’}})
db.user.remove({$and:[{age:{$gt:20}},{sex:{$ne:’女’}}]})
或
db.user.remove({age:{$gt:20},sex:{$ne:’女’}})
Mongoose是封装了MongoDB操作的一个对象模型库
作用是连接后台服务器与数据库服务器,操作数据库
(增删改查)
cnpm install mongoose --save
mongoose.connect(‘mongodb://127.0.0.1:27017/dbname’,function(err){
If(!err){
console.log(‘数据库连接成功’)
}
})
Schema : 一种以文件形式存储的数据库模型骨架,不具备数据库的操作能力
Model : 由 Schema 发布生成的集合模型,具有抽象属性和行为的数据库操作能力
Entity : 由 Model 创建的实体,他的操作也会影响数据库。
5、创建一个Schema,数据结构为user字符串类型,txt字符串类型,另添加时间戳?
var mongoose=require('mongoose');
var Schema=mongooe.Schema;
var myschema=new Schema({user:String,txt:String},{timestamps:true});
module.exports=mySchema;
var mongoose=require('mongoose');
var mySchema=require('../schema/user');
var User=mongoose.model('User',mySchema);
module.exports=User;
User.create({user:’tom’,txt:’hello world’},function(err,data){
If(!err){
res.redirect(‘/’)
}
})
var entity=new User({user:’tom’,txt:’hello world’});
entity.save(function(err,data){
If(!err){
res.redirect(‘/’)
}
})
User.find({},function(err,data){
If(!err){
res.render(‘index’,{list:data})
}
})
User.remove({_id:12345},function(err,data){
If(!err){
res.redirect(‘/’);
}
})
Student.remove({_id:12345},function(err,data){
If(!err){
res.json({code:1,msg:’删除成功’})
}
})
Student.update({_id:12345},{$set:{sex:’女’}},function(err,data){
If(!err){
res.json({code:1,msg:’修改成功’})_
}
})
url.parse()
1、url模块的使用
将请求地址解析成对象。
3、请使用http搭建一个最简单的服务器,直接写代码?
var http=require(‘http’);
var server=http.createServer(function(req,res,next){
//业务逻辑 })
server.listen(3000,function(err){if(!err){console.log(‘服务器运行在3000端口上’)}})
个劳保 global nodejs中没有window对象
Input.onkeydow(function(){})
给父元素设置绝对定位,子元素相对定位,子元素left:50%;top:50%; margen-left:-本身宽度一半;margen-top:-本身高度一半
异步:在一件事情没有做完,可以接着做另外一件事 非阻塞
同步:一件事情没有做完,就不可以做下一件事 阻塞。
同步案例:for循环语句,alert() 等
异步案例:定时器,ajax异步请求
模块导出: module.exports={}
模块导入: require(‘路径’)
封装模块,可以提高开发效率,提高代码复用率。
cnpm i express -generator
express myname
npm start
在配置文件 package.json里 指定子bin 启动文件 可以启动
静态资源文件 html css js img
路由 包括前后台交互接口
视图文件 前端模板页面
主文件 入口文件
存放启动项目的脚本文件
Express –e test
Cnpm install mongoose --save
Mongoose.connect(“mongodb://127.0.0.1:27017/book”,function(err){
If(!err){
Console.log(“数据库连接成功”)
}
})
Var mongoose = require(“mongoose”);
Var Schema = mongoose,Schema;
Var myschema = new Schema({user:String,pass:String});
Module.exports = myschema
Var mongoose = require(“mongoose”);
Var myschema = require(“../schema/user.js”);
Var User = mongoose.model(“User”,myschema);
Module.exports = User;
User.create({a:100,b:’hello’})
User.remove({name:“张三”})
User.updateOne({name: “张三”},{$set:{age:20}})
User.find({age:{$gt:20}})
10、User集合中,查找所有sex为’女’的文档,写出代码?
User.find({sex:“女”})
LocalStorage和sessionStorage是HTML5新增加的web机制
1. Localstorage生命周期长必须手动才能清除
2.Sessionstorage的生命周期是从页面开启到页面关闭
3.内存方面:Localstorge和Sessionstorge是5M cookie是5K
4.cookie的使用会占用过多的带
5. Session存储的位置 不在客户端而是服务器端
6. Session比cookie更安全隐秘
Web服务器可以用来解析我们的http请求 给我们做出相对应的响应与反馈