当前位置: 首页 > news >正文

昆明移动端网站建设酒店网站搜索引擎优化方案

昆明移动端网站建设,酒店网站搜索引擎优化方案,自己服务器可以做网站,网站是怎么建立起来的学习视频#xff1a;尚硅谷2023版Node.js零基础视频教程#xff0c;nodejs新手到高手 文章目录 #x1f4da;express使用#x1f407;初体验#x1f407;express路由⭐️路由的使用⭐️获取请求参数⭐️获取路由参数#x1f525;练习#xff1a;根据路由参数响应歌手信息… 学习视频尚硅谷2023版Node.js零基础视频教程nodejs新手到高手 文章目录 express使用初体验express路由⭐️路由的使用⭐️获取请求参数⭐️获取路由参数练习根据路由参数响应歌手信息 express响应设置express中间件⭐️定义全局中间件⭐️定义路由中间件⭐️静态资源中间件静态资源中间件练习局域网内访问网页❓ 获取请求体数据 body-parserexpress防盗链防盗链实践 路由模块化Router介绍使用 EJS模板引擎介绍列表渲染条件渲染express中使用ejs 应用程序生成器express-generator express使用 初体验 express 是一个基于 Node.js 平台的极简、灵活的 WEB 应用开发框架官方网址简单来说express 是一个封装好的工具包封装了很多功能便于我们开发 WEB 应用HTTP 服务 express 本身是一个 npm 包所以可以通过 npm 安装 npm init npm i express初体验 //1. 导入 express const express require(express); //2. 创建应用对象 const app express(); //3. 创建路由规则 app.get(/home, (req, res) {res.end(hello express server); }); //4. 监听端口 启动服务 app.listen(3000, () {console.log(服务已经启动, 端口监听为 3000...); });express路由 官方定义 路由确定了应用程序如何响应客户端对特定端点的请求。 ⭐️路由的使用 一个路由的组成由请求方法 路径和回调函数组成。 express中提供了一系列方法使用路由使用格式如下app.method(path,callback) res.end和res.send的区别 //导入 express const express require(express); //创建应用对象 const app express(); //创建 get 路由 app.get(/home, (req, res) {res.send(网站首页); }); //首页路由 app.get(/, (req,res) {res.send(我才是真正的首页); }); //创建 post 路由 app.post(/login, (req, res) {res.send(登录成功); }); //匹配所有的请求方法 app.all(/search, (req, res) {res.send(1 秒钟为您找到相关结果约 100,000,000 个); }); //自定义 404 路由 app.all(*, (req, res) {res.send(h1404 Not Found/h1) }); //监听端口 启动服务 app.listen(3000, () {console.log(服务已经启动, 端口监听为 3000); });以下是上述代码运行后直接输网址得到的返回。 针对login部分上边那得不到想要的是因为指定了post ⭐️获取请求参数 express 框架封装了一些 API 来方便获取请求报文中的数据并且兼容原生 HTTP 模块的获取方式。//导入 express const express require(express); //创建应用对象 const app express(); //获取请求的路由规则 app.get(/request, (req, res) {//1. 获取报文的方式与原生 HTTP 获取方式是兼容的console.log(req.method);console.log(req.url);console.log(req.httpVersion);console.log(req.headers);//2. express 独有的获取报文的方式//获取查询字符串console.log(req.query); // 『相对重要』//获取ipconsole.log(req.ip)// 获取指定的请求头console.log(req.get(host));res.send(请求报文的获取); }); //启动服务 app.listen(3000, () {console.log(启动成功....) })⭐️获取路由参数 路由参数指的是 URL 路径中的参数数据//导入 express const express require(express);//创建应用对象 const app express();//创建路由 app.get(/:id.html, (req, res) {//获取 URL 路由参数res.send(商品详情, 商品 id 为 req.params.id); });//监听端口, 启动服务 app.listen(3000, () {console.log(服务已经启动, 端口 3000 正在监听中....) })练习根据路由参数响应歌手信息 //导入 express const express require(express); //导入 json 文件中括号解构返回数组 const {singers} require(./singers.json); //创建应用对象 const app express();//创建路由 app.get(/singer/:id.html, (req, res) {//获取路由参数let {id} req.params;//在数组中寻找对应 id 的数据let result singers.find(item {if(item.id Number(id)){return true;}});//判断if(!result){res.statusCode 404;res.send(h1404 Not Found/h1)return;}res.send(!DOCTYPE htmlhtml langenheadmeta charsetUTF-8meta http-equivX-UA-Compatible contentIEedgemeta nameviewport contentwidthdevice-width, initial-scale1.0titleDocument/title/headbodyh2${result.singer_name}/h2img src${result.singer_pic} //body/html); });//监听端口, 启动服务 app.listen(3000, () {console.log(服务已经启动, 端口 3000 正在监听中....) })express响应设置 express 框架封装了一些 API 来方便给客户端响应数据并且兼容原生 HTTP 模块的获取方式 //获取请求的路由规则 app.get(/response, (req, res) { //1. express 中设置响应的方式兼容 HTTP 模块的方式 res.statusCode 404; res.statusMessage xxx; res.setHeader(abc,xyz); res.write(响应体); res.end(xxx); //2. express 的响应方法 res.status(500); //设置响应状态码 res.set(xxx,yyy);//设置响应头 res.send(中文响应不乱码);//设置响应体 //连贯操作 res.status(404).set(xxx,yyy).send(你好朋友) //3. 其他响应 res.redirect(http://atguigu.com)//重定向 res.download(./package.json);//下载响应 res.json();//响应 JSON res.sendFile(__dirname /home.html) //响应文件内容 });express中间件 中间件Middleware本质是一个回调函数。中间件函数可以像路由回调一样访问请求对象request和响应对象response。中间件的作用 就是 使用函数封装公共操作简化代码。类型全局中间件和路由中间件。 ⭐️定义全局中间件 声明中间件函数 let recordMiddleware function(request,response,next){//实现功能代码//.....//执行next函数(当如果希望执行完中间件函数之后仍然继续执行路由中的回调函数必须调用next)next(); }应用中间件app.use(recordMiddleware); 声明时直接传递 app.use(function (request, response, next) {console.log(定义第一个中间件);next(); })express 允许使用 app.use() 定义多个全局中间件 app.use(function (request, response, next) {console.log(定义第一个中间件);next(); }) app.use(function (request, response, next) {console.log(定义第二个中间件);next(); })/*** 记录每个请求的 url 与 IP 地址*/ //导入 express const express require(express); const fs require(fs); const path require(path);//创建应用对象 const app express();//声明中间件函数在这里就是起一个函数声明形成模板不用在每个app里写记录语句 //把公共代码放这里这样每次请求都能被记录 function recordMiddleware(req, res, next){//获取 url 和 iplet {url, ip} req;//将信息保存在文件中 access.logfs.appendFileSync(path.resolve(__dirname, ./access.log), ${url} ${ip}\r\n);//调用 next让它去调用后续的路由函数next(); }//使用中间件函数 app.use(recordMiddleware);//创建路由 app.get(/home, (req, res) {res.send(前台首页); });app.get(/admin, (req, res) {res.send(后台首页); });app.all(*,(req, res) {res.send(h1404 Not Found/h1) })//监听端口, 启动服务 app.listen(3000, () {console.log(服务已经启动, 端口 3000 正在监听中....) })⭐️定义路由中间件 如果只需要对某一些路由进行功能封装 则就需要路由中间件。 调用格式如下 app.get(/路径,中间件函数,(request,response){ }); app.get(/路径,中间件函数1,中间件函数2,(request,response){ });/*** 针对 /admin /setting 的请求, 要求 URL 携带 code521 参数, 如未携带提示『暗号错误』 *///导入 express const express require(express);//创建应用对象 const app express();//创建路由 app.get(/home, (req, res) {res.send(前台首页); });//声明中间件 let checkCodeMiddleware (req, res, next) {//判断 URL 中是否 code 参数等于 521if(req.query.code 521){// 满足条件就调用next();}else{res.send(暗号错误);} }//后台 app.get(/admin, checkCodeMiddleware, (req, res) {res.send(后台首页); });//后台设置 app.get(/setting, checkCodeMiddleware, (req, res) {res.send(设置页面); });app.all(*,(req, res) {res.send(h1404 Not Found/h1) })//监听端口, 启动服务 app.listen(3000, () {console.log(服务已经启动, 端口 3000 正在监听中....) })⭐️静态资源中间件 express 内置处理静态资源css图片等的中间件 //引入express框架 const express require(express); //创建服务对象 const app express(); //静态资源中间件的设置将当前文件夹下的public目录作为网站的根目录 app.use(express.static(./public)); //当然这个目录中都是一些静态资源 //如果访问的内容经常变化还是需要设置路由 //但是在这里有一个问题如果public目录下有index.html文件单独也有index.html的路由 //则谁书写在前优先执行谁 app.get(/index.html,(request,response){respsonse.send(首页); }); //监听端口 app.listen(3000,(){console.log(3000 端口启动....); });//导入 express const express require(express);//创建应用对象 const app express();//创建路由 app.get(/, (req, res) {res.send(我才是首页~~~); });//静态资源中间件设置 app.use(express.static(__dirname /public));//监听端口, 启动服务 app.listen(3000, () {console.log(服务已经启动, 端口 3000 正在监听中....) })静态资源中间件练习局域网内访问网页❓ 喵喵大王立大功 首先npm init其次npm i express创建server.jsconst express require(express); const app express();// 设置静态资源中间件 app.use(express.static(__dirname /todolist));app.listen(3000,() {console.log(服务已经启动端口3000正在监听中......) })node .\server.js 查看ip地址cmd ——ipconfig可实现局域网内访问喵喵大王立大功的网页呜三个舍友只有一个可以呜呜 解决办法ISS管理界面修改 获取请求体数据 body-parser 第一步安装 npm i body-parser第二步导入 body-parser 包 const bodyParser require(body-parser);第三步获取中间件函数 //处理 querystring 格式的请求体 let urlParser bodyParser.urlencoded({extended:false})); //处理 JSON 格式的请求体 let jsonParser bodyParser.json();第四步设置路由中间件然后使用 request.body 来获取请求体数据 app.post(/login, urlParser, (request,response){//获取请求体数据//console.log(request.body);//用户名console.log(request.body.username);//密码console.log(request.body.userpass);response.send(获取请求体数据); });应用记得先装包 /*** 按照要求搭建 HTTP 服务* * GET /login 显示表单网页* POST /login 获取表单中的『用户名』和『密码』*/ //导入 express const express require(express); const bodyParser require(body-parser)//创建应用对象 const app express();//解析 JSON 格式的请求体的中间件 // const jsonParser bodyParser.json()//解析 querystring 格式请求体的中间件 const urlencodedParser bodyParser.urlencoded({ extended: false })//创建路由规则 app.get(/login, (req, res) {// res.send(表单页面)//响应 HTML 文件内容res.sendFile(__dirname /11_form.html); });//post 规则 app.post(/login, urlencodedParser, (req, res) {//获取 用户名 和 密码console.log(req.body);res.send(获取用户的数据) });//启动服务 app.listen(3000, () {console.log(server is running...); })express防盗链 不允许外部网页调用图片。 防盗链实践 关键关注referer请求头。功能只允许127.0.0.1访问//导入 express const express require(express);//创建应用对象 const app express();//声明中间件 app.use((req, res, next) {//检测请求头中的 referer 是否为 127.0.0.1//获取 refererlet referer req.get(referer);if(referer){//实例化let url new URL(referer);//获取 hostnamelet hostname url.hostname;//判断if(hostname ! 127.0.0.1){//响应 404 res.status(404).send(h1404 Not Found/h1);return;}}next(); });//静态资源中间件设置 app.use(express.static(__dirname /public));//监听端口, 启动服务 app.listen(3000, () {console.log(服务已经启动, 端口 3000 正在监听中....) })路由模块化Router 介绍 express 中的 Router 是一个完整的中间件和路由系统可以看做是一个小型的 app 对象。Router 作用对路由进行模块化更好的管理路由。主文件代码量减少管理更方便就类似cssjs外部分离。 使用 创建独立的js文件homeRouter.js//1. 导入 express const express require(express); //2. 创建路由器对象 const router express.Router(); //3. 在 router 对象身上添加路由 router.get(/, (req, res) { res.send(首页); }) router.get(/cart, (req, res) { res.send(购物车); }); //4. 暴露 module.exports router;主文件const express require(express); const app express(); //5.引入子路由文件 const homeRouter require(./routes/homeRouter); //6.设置和使用中间件 app.use(homeRouter); app.listen(3000,(){console.log(3000 端口启动....); })EJS模板引擎 介绍 模板引擎是分离用户界面和业务数据的一种通用型技术但现在用的没那么多了。EJS 是一个高效的 Javascript 的模板引擎官网中文站下载安装npm i ejs --save示例//1.引入ejs const ejs require(ejs); //2.定义数据 let person [张三,李四,王二麻子]; //3.ejs解析模板返回结构 //% % 是ejs解析内容的标记作用是输出当前表达式的执行结构 let html ejs.render(‘% person.join(,) %’, {person:person}); //4.输出结果 console.log(html);执行js代码% code %输出转义的数据到模板上% code %输出非转义的数据到模板上%- code % 列表渲染 //原生 JS let str ul; xiyou.forEach(item {str li${item}/li; }) //闭合 ul str /ul; console.log(str);ul% xiyou.forEach(item { %li% item %/li% }) % /ul条件渲染 // 原生 JS if(isLogin){console.log(span欢迎回来/span) }else{console.log(button登录/button button注册/button); }% if(isLogin){ % span欢迎回来/span % }else{ % button登录/button button注册/button % } %express中使用ejs //导入 express const express require(express); //导入 path const path require(path); //创建应用对象 const app express(); //1. 设置模板引擎 app.set(view engine, ejs);// pug twing //2. 设置模板文件存放位置 模板文件: 具有模板语法内容的文件 app.set(views, path.resolve(__dirname, ./views));//创建路由 app.get(/home, (req, res) {//3. render 响应// res.render(模板的文件名, 数据);//声明变量let title 尚硅谷 - 让天下没有难学的技术;res.render(home, {title});//4. 创建模板文件 });//监听端口, 启动服务 app.listen(3000, () {console.log(服务已经启动, 端口 3000 正在监听中....) })应用程序生成器express-generator 可以快速创建一个应用的骨架首先全局安装npm install -g express-generator创建骨架express -e 文件夹 然后需要安装依赖npm i运行npm start 该有都有补充什么在对应内容添加即可。
http://www.zqtcl.cn/news/374438/

相关文章:

  • 网站开发保密协议范本北京市建设工程信息网查询
  • 怎样跟网站做优化呢wordpress实现新闻列表
  • 济南手机网站定制费用wordpress安装文档下载
  • 麻涌镇网站仿做郑州做网页的公司
  • 做那个网站中山免备案网站建设
  • 软路由系统如何做网站全网营销式网站
  • 中国建设网官方网站视觉网站建设
  • 苏州乡村旅游网站建设策划书.docincapsula wordpress
  • 百度收录自适应网站滨海做网站哪家公司好
  • 东莞网站排名优化公司福田在线官网
  • 清湖网站建设天猫开店流程及费用2023
  • 邵阳建设网站公司网站建设构架
  • 怎样做网站卖网站网络营销概念
  • 怎样做网站能百度能搜到设计网站公司哪里好
  • 网站收缩栏专业定制网站公司
  • 烟台网站建设方案托管无锡网站制作企业
  • 网站网页是怎么做的用什么做网站 优化
  • 数据网站怎么做的网站开发的开题报告引言
  • 苏州专业网站制作设计做网站上海
  • 做网站可以用中文域名备案嘛山东省住房和城乡城乡建设厅网站
  • 网站建设推广多少钱站长工具seo综合查询关键词
  • 分类信息网站平台的推广做网站的花费
  • 还原wordpress站点地址恢复网站都要备案吗
  • 如何建立营销性企业网站论文如何修改wordpress
  • 全网营销销售郑州seo网站管理
  • dw怎么做网站首页邯郸网站建设品牌加盟
  • 辽宁省建筑工程造价信息网深圳市seo点击排名软件价格
  • 网站建设宗旨是指建设中英文网站
  • 浙江网站建设价格低东莞网站建设推广多少钱
  • 网站服务器重做系统怎么做快速提升网站权重