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

网站开发模块查相似备案通

网站开发模块查相似,备案通,怎样建立自己网站视频,如何加强网站管理的队伍建设文章说明#xff1a;1. 之前想搭建个人博客#xff0c;由于学习的是react技术栈#xff0c;所以就到处搜罗资料学了nextjs#xff0c;配合koa就把博客搭起来了。该系列文章基于我的学习笔记#xff0c;重新整理了一遍#xff0c;如果有错误之处#xff0c;还请指正。2. …文章说明 1. 之前想搭建个人博客由于学习的是react技术栈所以就到处搜罗资料学了nextjs配合koa就把博客搭起来了。该系列文章基于我的学习笔记重新整理了一遍如果有错误之处还请指正。 2. 个人能力有限我更注重的是使用所以对于许多原理也只是简单理解并未深究。如果是想研究源码或者追求性能深度优化的老铁可以不用往下看了 3. 转载请注明出处各工具版本npm v6.10node v12.13react v16.12next v9.1可能需要的预备知识React项目经验、nodejs开发经验webpack、npm等常用工具使用经验。最好会koa部分地方可能会用到一、Nextjs与服务端渲染Nextjs的官方解释Next.js 是一个轻量级的 React 服务端渲染应用框架。服务端渲染顾名思义就是在服务器上就把网页渲染好了你请求时直接发给你渲染好的页面。知道了原理ssr的优势劣势也就很明显了 与客户端渲染比较优势 1. 更利于SEO便于搜索引擎收录。因为大多数爬虫只会爬源码不会爬脚本当服务端返回渲染好的数据后爬虫便能直接爬取了。 2. 利于首屏加载。这个简单服务端发过来的就是渲染好的客户端就省事了加载也就快了。 劣势就是1. 服务器的压力大了(多了活要干)2. 对开发人员要求也高了 深有体会量发而行这已经不属纯正血统的前端范畴了因为要成功部署的话你还不得不心甘情愿地去学点服务器知识、Linux运维、nginx部署等 特别注意当服务端渲染时服务端是没有window、document对象的浏览器端才有直接调用会报错。想用这俩对象的话最好放在didAmount周期函数里等组件挂载后再调用其实从这一点来说这只能算是半服务端渲染......扯远了 另外Nextjs自带的服务器专注于处理ssr部分但后端往往还需要处理文件、连接数据库等功能此时还需要借助其他的node服务器我这选用了koa2然后让nextjs作为koa的一个专门负责ssr的中间件。 二、搭建Nextjs项目实践出真知。介绍完了作为正经的程序员先上手一个再慢慢研究。我们按照官网的节奏一步步搭建项目再一步步解释每个文件和目录的作用 1. 搭建环境随便创建个项目目录如demo 进入该目录npm初始化生成package.jsonnpm init npm安装nextjs和其依赖npm install next react react-dom 之后再修改package.json的scripts模块:{scripts: {dev: next,build: next build,start: next start} }说明和react项目类似这里的命令build即部署时的打包命令,start运行打包后的文件命令dev则是开发环境下启动nextjs服务器。 到这里环境就算搭建好了。 2. 创建pages目录Nextjs的路由系统非常简单所有的路由页面全部存放在pages目录下nextjs会自动对应page目录的文件路径生成对应路由。 如我们在pages创建demo.js export default () divThis is the demo page/div然后启动next服务器npm run dev 命令行显示如下时表示启动成功了 D:webdemonpm run dev next_test1.0.0 dev D:webdemonext[ wait ] starting the development server ... [ info ] waiting on http://localhost:3000 ...此时打开浏览器进入localhost:3000/demo便能看到页面了路由/demo显示界面3._app.js和 _document.js特别的pages下有两个特殊文件_app.js和_document.js。这两个文件默认是隐藏的新建的话就会覆盖之前的文件。他们分别用来自定义APP和自定义Document 自定义什么意思有什么用简单来说就是用来定义一些页面共用的属性如设置全局css,通用布局等或者定义一些通用的动作如获取、传递数据等 这个结合nextjs的getInitialProps函数会更好说明就留着后续讲getInitialProps数据获取和页面布局的时候再一并解释吧。 这篇文章我们主要关注路由系统。 三、路由系统保证pages目录的干净对于现在的组件化开发我们通常会有两种组件一种作为某个独立功能的小组件一种是作为页面显示的页面组件通常结合了多个小组件Nexjs同样适用 但小组件不能存储在pages目录下这会导致路由系统混乱。我们可以新建一个components目录根据自己喜好自定义名字来存储小组件在需要时从该目录下import使用即可。 多级路由如果路由有多级直接在pages下创立父级目录再把最终路由文件放入目录下即可实现多级路由。如在pages目录下创建user目录user下再创建index.js和home.js那么路由/user就对应index.js文件/user/home就对应home.js文件 路由跳转Nextjs官方推荐了两种跳转方式一种是Link组件包裹一种使用Router我个人是不推荐Link的原理也是用Router实现的使用也简单但用起来总感觉很冗余。我这里主要介绍Router想了解Link的老铁得麻烦移步官网了。 Nextjs提供了一个next/router的包专门用来处理路由。Router便是其中一个对象Router.push(url)进行跳转。 实践一下 1. pages目录下创建index.js文件import React from react import Router from next/routerexport default () {return(button onClick{()Router.push(/demo)} 送我去demo页/buttondiv这里是主页/div/) }2. 修改demo.js文件import React from react import Router from next/routerexport default () {return(button onClick{()Router.push(/)} 送我去主页/buttondiv这里是demo页/div/) }3. 运行结果 点击“送我去demo页”按钮后路由参数注意注意Nextjs不能使用params传参数!只能通过query! 像这样 Router.push(url?id1) 等价 Router.push({pathname:url,query:{id:1}})另外前面说过服务端渲染时没有window对象的自然不能通过传统途径获取url参数这里next/router里提供了一个withRouter对象用它包裹组件后组件会多出router的参数通过router就能获取query参数了 import React from react import Router,{ withRouter } from next/routerconst Demo (props) {return(button onClick{()Router.push(/)} 送我去主页/buttondiv这里是demo页/divdiv{props.router.query.id}/div/) } export default withRouter(Demo);成功显示id的值1路由映射我们常看到的url是这样的/url?id1而路由映射可以帮我们显示成为这样 /url/1比较美观友好其实也就好一点点这小节讲解下路由映射会涉及到koa使用不感兴趣的小伙伴直接跳过吧毕竟也不是什么特别重要的 表面上的实现方法 1. Router.push({ pathname: /demo, query: { id: 1 } },/demo/1)Router.push的第三个参数即可指定别名 2. Link组件中的as属性Link href/demo?id1 as/demo/1这样看上去的确可以了初始时也能访问但页面一刷新就会404为什么因为当我们点击按钮在浏览器端跳转时是浏览器去找页面它通过路由映射可以找到。而刷新的时候是服务器去找而我们的pages页面里面没有/demo/1的文件所以就报404了。 解决办法利用koa处理 router.get(/demo/:id,async (ctx){cosnt id ctx.params.id await handle(ctx.req,ctx.res,{pathname:/demo,query: {id}}),ctx.respond false })其实就是在服务器处又将路由转换回来而已。路由钩子Router中还定义了几个钩子函数用来获取路由转变时的状态方便我们在转换路由时进行操作 // routeChangeStart history模式路由改变刚开始 // routeChangeComplete history模式路由改变结束 // routeChangeError 路由改变失败 // hashChangeStart hash模式路由改变刚开始 // hashChangeComplete hash模式路由改变结束Router.events.on(event,func()) //event即监听的事件以上5种func回调函数 Router.events.off(event,func()) //取消监听好了路由系统就讲解到这了下一篇文章会讲解到nextjs的布局和getInitialProps()函数顺带会把这期遗留的_app.js和_document.js一并解释了。喜欢的话欢迎分享欢迎讨论欢迎关注我的其他平台账号 【知乎】均远 【公众号】佛系前端 【个人博客】http://xujunyuan.com 【GitHub】JunYuanHub
http://www.sadfv.cn/news/268908/

相关文章:

  • 广东建设部网站海南省住建设厅网站报监
  • 网站投放广告怎么做用discuz做门户网站
  • 一个ip可以做几个网站互联网公司市值
  • 做网站 没内容wap免费网站
  • 如何查看网站流量海淀区网站搭建
  • 做汽车的网站做网站小程序在哪点拉客户
  • 消防做ccc去那个网站wordpress图片外链好
  • 容桂网站制作价格制作网站最新工具
  • 微信公众号怎么做网站链接网络运营商怎么看
  • 专业做高校网站群管理系统三网合一 营销型网站
  • 手机做网站内蒙和城乡建设部网站
  • 静态网站建设教程西安汇友网站建设
  • 二级域名可以做淘客网站网站开发适合女生吗
  • 小欢喜林磊儿什么网站做家教福州专业网站开发很专业
  • 建网站代理哪个怎么下载在线视频
  • 举例描述该如何布局网站关键词做淘宝客网站要注意什么
  • 120亿营收超120亿上海做网站优化价格
  • 青岛网站定制多少钱专业定制网红柴火灶
  • 网站关键词代码青岛网站设计公司在哪找
  • 学网站建设与管理难吗wordpress mysql备份
  • 做网站去哪里做好宁波网站设计公司排名
  • 专业图库网站 西安网站建设找c宋南南
  • 外国人做中国数学视频网站Wordpress会员插件出错
  • 开一个做网站的公司门户网站模块
  • 管理学精品课程网站网站推广怎么样做
  • 设计类作品集怎么制作关键词优化快速排名
  • 安徽索凯特建设工程有限公司网站sem竞价托管公司
  • 为什么学习wordpress处理器优化软件
  • 电子商务建立网站前期准备设计师网上接私单app
  • 北京好网站制作公司哪家好空间站免费版下载