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

网站服务器租用合同传媒公司怎么运营

网站服务器租用合同,传媒公司怎么运营,商城网站 免费开源,运营网站需要什么条件笔记内容转载自 AcWing 的 Web 应用课讲义#xff0c;课程链接#xff1a;AcWing Web 应用课。 CONTENTS 1. Web分类2. Route组件3. URL中传递参数4. Search Params传递参数5. 重定向6. 嵌套路由 本节内容是如何将页面和 URL 一一对应起来。 1. Web分类 Web 页面可以分为两…笔记内容转载自 AcWing 的 Web 应用课讲义课程链接AcWing Web 应用课。 CONTENTS 1. Web分类2. Route组件3. URL中传递参数4. Search Params传递参数5. 重定向6. 嵌套路由 本节内容是如何将页面和 URL 一一对应起来。 1. Web分类 Web 页面可以分为两大类 静态页面页面里的数据是写死的即整个文件存放在服务器上当用户访问 URL 时服务器原封不动地将页面信息传给前端。动态页面页面里的数据是动态填充的即服务器上存的是页面的模板数据是存到数据库里的当用户打开页面时会动态将这个页面拼接起来。现在一般都是动态页面。 后端渲染数据在后端填充即模板与数据的拼接操作是在服务器端进行的。客户端向服务器端发送 URL服务器端返回拼接好的页面。前端渲染数据在前端填充即模板与数据的拼接操作是在用户的浏览器进行的。第一次打开页面时客户端向服务器端发送 URL服务器端返回所有页面的模板渲染的时候根据当前需要哪些数据再向服务器端请求数据第二次打开页面时直接用 JS 刷新当前页面不一定会向后端发送请求。 2. Route组件 Route 组件可以让我们的前端页面也可以和 URL 唯一对应起来使得前端渲染的模式看起来假装和后端渲染是一样的。 我们创建一个新的项目 route-app然后用 VS Code 打开项目 create-react-app route-app配置一下环境 VS Code 安装插件Auto Import - ES6, TS, JSX, TSX安装 Route 组件在项目根目录下安装安装好后重启一下 VS Codenpm i react-router-dom安装 Bootstrapnpm i bootstrap Route 组件介绍 BrowserRouter所有需要路由的组件都要包裹在 BrowserRouter 组件内Link跳转到某个链接但是没有向后端发请求to 属性表示跳转到的链接Routes类似于 C 中的 switch但是只匹配第一个路径即从前往后看每个 Route判断当前链接是否等于 Route 中的链接如果是则渲染 Route 中的组件之后的就不继续往下判断了Route路由path 属性表示路径element 属性表示路由到的内容组件。 我们先创建好我们项目的根组件 App、导航栏 NavBar以及多个子页面的组件Home、Linux、Django、Web、NotFound。 NavBar 代码如下 import React, { Component } from react;class NavBar extends Component {state { } render() {return (nav classNamenavbar navbar-expand-lg bg-body-tertiarydiv classNamecontainer-fluida classNamenavbar-brand href/讲义/abutton classNamenavbar-toggler typebutton data-bs-togglecollapse data-bs-target#navbarNavAltMarkup aria-controlsnavbarNavAltMarkup aria-expandedfalse aria-labelToggle navigationspan classNamenavbar-toggler-icon/span/buttondiv classNamecollapse navbar-collapse idnavbarNavAltMarkupdiv classNamenavbar-nava classNamenav-link active aria-currentpage href/Home/aa classNamenav-link href/linuxLinux/aa classNamenav-link href/djangoDjango/aa classNamenav-link href/webWeb/a/div/div/div/nav);} }export default NavBar;App 代码如下 import React, { Component } from react; import NavBar from ./navbar; import Home from ./home; import Linux from ./linux; import Django from ./django; import Web from ./web; import NotFound from ./notfound;class App extends Component {state { } render() {return (React.FragmentNavBar //React.Fragment);} }export default App;Home、Linux、Django、Web、NotFound 代码类似只展示一个 import React, { Component } from react;class Home extends Component {state { } render() {return (h1Home/h1);} }export default Home;现在我们根据 URL 来渲染页面注意此时还是属于后端渲染每次都会重新加载页面我们修改 App import React, { Component } from react; import NavBar from ./navbar; import Home from ./home; import Linux from ./linux; import Django from ./django; import Web from ./web; import NotFound from ./notfound; import { Routes, Route } from react-router-domclass App extends Component {state { } render() {return (React.FragmentNavBar /Routes // 一定要将路由包含在Routes里面里面会有很多个RouteRoute path/ element{Home /} / // 如果链接为/就跳到Home组件Route path/linux element{Linux /} /Route path/django element{Django /} /Route path/web element{Web /} //Routes/React.Fragment);} }export default App;现在我们用 Link 替换 NavBar 中的链接标签 a这样就变为了前端渲染 import React, { Component } from react; import { Link } from react-router-domclass NavBar extends Component {state { } render() {return (nav classNamenavbar navbar-expand-lg bg-body-tertiarydiv classNamecontainer-fluidLink classNamenavbar-brand to/讲义/Linkbutton classNamenavbar-toggler typebutton data-bs-togglecollapse data-bs-target#navbarNavAltMarkup aria-controlsnavbarNavAltMarkup aria-expandedfalse aria-labelToggle navigationspan classNamenavbar-toggler-icon/span/buttondiv classNamecollapse navbar-collapse idnavbarNavAltMarkupdiv classNamenavbar-navLink classNamenav-link aria-currentpage to/Home/LinkLink classNamenav-link to/linuxLinux/LinkLink classNamenav-link to/djangoDjango/LinkLink classNamenav-link to/webWeb/Link/div/div/div/nav);} }export default NavBar;3. URL中传递参数 当网站的页面数量很多的时候我们肯定不可能去写那么多个 Route。 假设我们现在有几篇 Web 讲义第 i i i 篇的路由链接为/web/content/i import React, { Component } from react; import { Link } from react-router-domclass Web extends Component {state {webs: [{id: 1, title: HTML基础标签},{id: 2, title: CSS},{id: 3, title: JavaScript},{id: 4, title: 中期项目-拳皇},{id: 5, title: React},]} render() {return (React.Fragmenth1Web/h1hr /div{this.state.webs.map(web (div key{web.id}Link to{/web/content/${web.id}}{web.id . web.title}/Link/div))}/div/React.Fragment);} }export default Web;我们先实现一下讲义内容的组件 WebContent import React, { Component } from react;class WebContent extends Component {state { } render() {return (h1Web Content/h1);} }export default WebContent;然后在 App 中写一下路由我们不能写多个 Route path/web/content/i element{WebContent /} /而是用 :xxx import React, { Component } from react; import NavBar from ./navbar; import Home from ./home; import Linux from ./linux; import Django from ./django; import Web from ./web; import WebContent from ./webcontent; import NotFound from ./notfound; import { Routes, Route } from react-router-domclass App extends Component {state { } render() {return (React.FragmentNavBar /div classNamecontainerRoutes // 一定要将路由包含在Routes里面里面会有很多个RouteRoute path/ element{Home /} / // 如果链接为/就跳到Home组件Route path/linux element{Linux /} /Route path/django element{Django /} /Route path/web element{Web /} /Route path/web/content/:chapter element{WebContent /} //Routes/div/React.Fragment);} }export default App;现在我们如何在 WebContent 中获取 :chapter 参数呢先看一下函数组件获取参数的方式可以直接用 useParams 函数获取参数 import React from react; import { useParams } from react-router-dom;const WebContent () {console.log(useParams())return (h1Web Content - {useParams().chapter}/h1); }export default WebContent;如果是类组件的话就需要先套一层函数组件然后把 useParams 函数作为参数传给自己 import React, { Component } from react; import { useParams } from react-router-dom;class WebContent extends Component {state { } render() {console.log(this.props.params)return (h1Web Content - {this.props.params.chapter}/h1);} }export default (props) (WebContent{...props} // 先把函数组件里面的属性展开params{useParams()}/ );4. Search Params传递参数 如果网站链接形式为/web/content?chapter3这样的链接也可以获取参数。 我们先改一下 Web 中的链接形式 import React, { Component } from react; import { Link } from react-router-domclass Web extends Component {state {webs: [...]} render() {return (React.Fragmenth1Web/h1hr /div{this.state.webs.map(web (div key{web.id}Link to{/web/content?chapter${web.id}}{web.id . web.title}/Link/div))}/div/React.Fragment);} }export default Web;然后在 WebContent 中获取链接的参数 import React, { Component } from react; import { useSearchParams } from react-router-dom; import { Link } from react-router-domclass WebContent extends Component {state {searchParams: this.props.params[0], // 用于获取某一个参数setSearchParams: this.props.params[1], // 用于设置链接里的参数重新渲染页面};render() {console.log(this.state.searchParams.get(chapter))return (React.Fragmenth1Web Content - {this.state.searchParams.get(chapter)}/h1hr /div讲义内容/divhr /Link to/web返回上一级/Link/React.Fragment);} }export default (props) (WebContent{...props} // 先把函数组件里面的属性展开params{useSearchParams()}/ );函数组件的写法如下 import React from react; import { useSearchParams } from react-router-dom; import { Link } from react-router-domconst WebContent () {let [searchParams, setSearchParams] useSearchParams();console.log(searchParams.get(chapter));return (React.Fragmenth1Web Content - {searchParams.get(chapter)}/h1hr /div讲义内容/divhr /Link to/web返回上一级/Link/React.Fragment); }export default WebContent;5. 重定向 当打开一个不存在的链接时应该重定向到 404 Not Found我们先将这个路由定义出来Route path/404 element{NotFound /} /。 使用 Navigate 组件可以重定向我们可以使用通配符 * 匹配其余的所有路径然后将其重定向到 /404 页面即可 import React, { Component } from react; import NavBar from ./navbar; import Home from ./home; import Linux from ./linux; import Django from ./django; import Web from ./web; import WebContent from ./webcontent; import NotFound from ./notfound; import { Routes, Route, Navigate } from react-router-domclass App extends Component {state { } render() {return (React.FragmentNavBar /div classNamecontainerRoutes // 一定要将路由包含在Routes里面里面会有很多个RouteRoute path/ element{Home /} / // 如果链接为/就跳到Home组件Route path/linux element{Linux /} /Route path/django element{Django /} /Route path/web element{Web /} /Route path/web/content element{WebContent /} /Route path/404 element{NotFound /} /Route path* element{Navigate replace to/404 /} //Routes/div/React.Fragment);} }export default App;6. 嵌套路由 假设 Linux 组件中有两个子模块 Homework 和 Terminal我们可以在 App 中创建嵌套路由 import React, { Component } from react; import NavBar from ./navbar; import Home from ./home; import Linux from ./linux; import Django from ./django; import Web from ./web; import WebContent from ./webcontent; import NotFound from ./notfound; import { Routes, Route, Navigate } from react-router-domclass App extends Component {state { } render() {return (React.FragmentNavBar /div classNamecontainerRoutes // 一定要将路由包含在Routes里面里面会有很多个RouteRoute path/ element{Home /} / // 如果链接为/就跳到Home组件Route path/linux element{Linux /}Route pathhomework element{h4Homework/h4} /Route pathterminal element{h4Terminal/h4} //RouteRoute path/django element{Django /} /Route path/web element{Web /} /Route path/web/content element{WebContent /} /Route path/404 element{NotFound /} /Route path* element{Navigate replace to/404 /} //Routes/div/React.Fragment);} }export default App;但是现在执行网页 /linux/homework 时不会渲染出子路由的内容我们需要在父组件中添加 Outlet / 组件用来填充子组件的内容 import React, { Component } from react; import { Link, Outlet } from react-router-domclass Linux extends Component {state { } render() {return (React.Fragmenth1Linux/h1hr /ul classNamenav justify-content-centerli classNamenav-itemLink classNamenav-link to/linux/homeworkHomework/Link/lili classNamenav-itemLink classNamenav-link to/linux/terminalTerminal/Link/li/ulhr /Outlet //React.Fragment);} }export default Linux;
http://www.hkea.cn/news/14508183/

相关文章:

  • 网站留言模块wdcp装wordpress
  • 自己怎样制作公司网站外国网站域名
  • 用别的域名给网站做竞价上海最近的新闻大事10条
  • 站长素材音效下载望城网站建设
  • 湛江有哪些网站建设公司微信朋友圈软文大全
  • 检测网站访问量wordpress全站伪静态
  • 定远县建设小学网站重庆梁平网站建设报价
  • 深圳建站模板公司教育网站建设的目的
  • 西安网站建设罗鑫邢台123今天最新招聘
  • 网页托管网站wordpress自定义文章类别
  • 网站html下载器网站备案 多少钱
  • 天河商城网站建设苏州建网站的公司平台收费标准
  • 奖券世界推广网站在网站开发中哪里需要js文件
  • pc蛋蛋网站开发wordpress网站发布时间
  • 网站建设汽车后市场解决方案有没有专门找装修公司的网站
  • 免费跨境电商网站网站屏幕自适应代码
  • ip代理提取网站源码闸北区网站制作
  • 绵阳做最好优化网站的网站建设思路方案
  • 渭南汽车网站制作网络服务者不履行法律
  • 邯郸网站维护三大门户网站
  • 公司网站建设合规吗网络营销外包都选异变网络
  • 南昌网站建设模板技术公司wordpress上传路径
  • 增加访客的网站官网站内优化怎么做 2018
  • 代码判断网站网站备案快速备案
  • 企业网站推广渠道网站开发流程步骤
  • 临沂网站建设服务商手机怎样创建网站
  • 网站建设海淀区2021年企业所得税优惠政策最新
  • 太原seo建站免费建立一个网站
  • 网站流量评价有哪几方面办公室装修设计创意图
  • 机械设备企业网站源码软件项目管理过程五个阶段