• vue框架前后端分离项目之跨域问题及首页搭建等相关内容-117


    1 跨域问题

    1 同源策略:浏览器的安全策略,不允许去另一个域加载数据
    2 域:ip或者端口都必须一致
    3 前后端分离项目会出现跨域
    4 不使用第三方,自己处理
    5 CORS:后端技术,跨域资源共享,服务端只要做配置,(本身浏览器已经支持了),就支持跨域
    -access-control-allow-origin: *  # 所有的域都可以向我发送请求,浏览器不会禁止
    6 浏览器将CORS请求分成两类:
    -简单请求(simple request)
    -非简单请求(not-so-simple request)
    7 满足以下两大条件就是简单请求
       (1) 请求方法是以下三种方法之一:
           HEAD
           GET
           POST
       (2)HTTP的头信息不超出以下几种字段:
           Accept
           Accept-Language
           Content-Language
           Last-Event-ID
           Content-Type:只限于三个值application/x-www-form-urlencoded、multipart/form-data、text/plain
           
    8 简单请求,只发送一次,如果后端写了CORS,浏览器就不禁止了
    9 非简单请求,发两次,第一次是OPTIONS(预检请求),看后端是否允许,如果允许再发真正的请求

    1.1 后端自己处理跨域问题

    # 写一个中间件
    from django.utils.deprecation import MiddlewareMixin
    class CoreMiddle(MiddlewareMixin):
       def process_response(self, request, response):
           if request.method == 'OPTIONS':  # 处理了非简单请求
               response['Access-Control-Allow-Headers'] = 'Content-Type,authorization'
           # 处理了简单请求
           response['Access-Control-Allow-Origin'] = '*'
           return response

    # setting中注册
    MIDDLEWARE = [
    ...
       'middle.CoreMiddle', # 自己写的处理跨域问题的中间件
      ...
    ]

    1.2 前端处理跨域

    vue.config.js

    module.exports = {
       devServer: {
           proxy: {
               '/ajax': {
                   target: 'https://m.maoyan.com/',
                   changeOrigin: true
              },
                '/user': {
                   target: 'http://127.0.0.1:8000/',
                   changeOrigin: true
              },

          }
      }
    };

    # axios发送请求
    this.$axios.get('user/test/').then(item=>{
                   console.log(item.data)
              })
    # 修改配置要重启

    2 头部组件,尾部组件

    <template>
       <div class="header">
           <div class="slogan">
               <p>老男孩IT教育 | 帮助有志向的年轻人通过努力学习获得体面的工作和生活</p>
           </div>
           <div class="nav">
               <ul class="left-part">
                   <li class="logo">
                       <router-link to="/">
                           <img src="../assets/img/head-logo.svg" alt="">
                       </router-link>
                   </li>
                   <li class="ele">
                       <span @click="goPage('/free-course')" :class="{active: url_path === '/free-course'}">免费课</span>
                   </li>
                   <li class="ele">
                       <span @click="goPage('/actual-course')" :class="{active: url_path === '/actual-course'}">实战课</span>
                   </li>
                   <li class="ele">
                       <span @click="goPage('/light-course')" :class="{active: url_path === '/light-course'}">轻课</span>
                   </li>
               </ul>

               <div class="right-part">
                   <div>
                       <span>登录</span>
                       <span class="line">|</span>
                       <span>注册</span>
                   </div>
               </div>
           </div>
       </div>
    </template>

    <script>
       export default {
           name: "Header",
           data() {
               return {
                   //sessionStorage中有url_path就使用它,没有就是 /
                   url_path: sessionStorage.url_path || '/',
              }
          },
           methods: {
               goPage(url_path) {
                   // 已经是当前路由就没有必要重新跳转
                   if (this.url_path !== url_path) {
                       //js控制路由跳转
                       this.$router.push(url_path);
                  }
                   //把当前路径加入到了sessionStorage
                   sessionStorage.url_path = url_path;
              },
          },
           // created() {
           //     sessionStorage.url_path = this.$route.path;
           //     this.url_path = this.$route.path;
           // }
      }
    </script>

    <style scoped>
      .header {
           background-color: white;
           box-shadow: 0 0 5px 0 #aaa;
      }

      .header:after {
           content: "";
           display: block;
           clear: both;
      }

      .slogan {
           background-color: #eee;
           height: 40px;
      }

      .slogan p {
            1200px;
           margin: 0 auto;
           color: #aaa;
           font-size: 13px;
           line-height: 40px;
      }

      .nav {
           background-color: white;
           user-select: none;
            1200px;
           margin: 0 auto;

      }

      .nav ul {
           padding: 15px 0;
           float: left;
      }

      .nav ul:after {
           clear: both;
           content: '';
           display: block;
      }

      .nav ul li {
           float: left;
      }

      .logo {
           margin-right: 20px;
      }

      .ele {
           margin: 0 20px;
      }

      .ele span {
           display: block;
           font: 15px/36px '微软雅黑';
           border-bottom: 2px solid transparent;
           cursor: pointer;
      }

      .ele span:hover {
           border-bottom-color: orange;
      }

      .ele span.active {
           color: orange;
           border-bottom-color: orange;
      }

      .right-part {
           float: right;
      }

      .right-part .line {
           margin: 0 10px;
      }

      .right-part span {
           line-height: 68px;
           cursor: pointer;
      }
    </style>
    <template>
      <div class="footer">
          <ul>
              <li>关于我们</li>
              <li>联系我们</li>
              <li>商务合作</li>
              <li>帮助中心</li>
              <li>意见反馈</li>
              <li>新手指南</li>
          </ul>
          <p>Copyright © luffycity.com版权所有 | 京ICP备17072161号-1</p>
      </div>
    </template>

    <script>
      export default {
          name: "Footer"
      }
    </script>

    <style scoped>
      .footer {
          100%;
          height: 128px;
          background: #25292e;
          color: #fff;
      }

      .footer ul {
          margin: 0 auto 16px;
          padding-top: 38px;
          810px;
      }

      .footer ul li {
          float: left;
          112px;
          margin: 0 10px;
          text-align: center;
          font-size: 14px;
      }

      .footer ul::after {
          content: "";
          display: block;
          clear: both;
      }

      .footer p {
          text-align: center;
          font-size: 12px;
      }
    </style>

    3 首页组件,轮播图组件

    <template>
       <div>
           <el-carousel height="400px">
               <el-carousel-item v-for="item in 4" :key="item">
                   <img src="../assets/img/banner4.png" alt="">
               </el-carousel-item>
           </el-carousel>
       </div>
    </template>

    <script>
       export default {
           name: "Banner",

      }
    </script>

    <style scoped>

    .el-carousel__item {
           height: 400px;
           min- 1200px;
      }
      .el-carousel__item img {
           height: 400px;
           margin-left: calc(50% - 1920px / 2);
      }
    </style>
    <template>
      <div id="home">
          <Header></Header>
          <Banner></Banner>
          <br><br><br><br><br><br>
          <br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
          内容部分
          <br><br><br><br>
          <Footer></Footer>
      </div>
    </template>

    <script>

      import Header from "../components/Header";
      import Footer from "../components/Footer";
      import Banner from "../components/Banner";
      export default {
          name: "Home",
          data(){
              return {

              }
          },
          components:{
              Header,
              Footer,
              Banner
          }
      }
    </script>

    <style scoped>

    </style>

    4 git入门

    1 协同开发:版本管理工具
    -svn
       -git
    2 git能干什么
       完成 协同开发 项目,帮助程序员整合代码
           i)帮助开发者合并开发的代码
           ii)如果出现冲突代码的合并,会提示后提交合并代码的开发者,让其解决冲突

       软件:SVN GIT(都是同一个人的个人项目)
           github、gitee(两个采用git版本控制器管理代码的公共平台)
           github,gitee,gitlab:区别
          -github:一般开源的代码放再github,代码托管平台(公有仓库,私有仓库),公司代码不会放 在这上面
               -gitee(码云):中国的github,开源代码放在共有仓库,有一部分公司的公司代码托管到gitee 的私有仓库(你们公司代码放在码云上)
               -gitlab:公司自己的搭建github,公司内部自己访问(docker拉一个gitlab镜像,跑起来即可)

       git:集群化、多分支
       
    3 安装git客户端
    一路下一步
    4 右键---》git bash(terminal窗口)
    git init  :初始化仓库

     

     

  • 相关阅读:
    chown
    chmod
    商务部
    使用 UEditor 编辑器获取数据库中的数据
    Java实现 蓝桥杯 算法提高 双十一抢购
    Java实现 蓝桥杯 算法提高 双十一抢购
    Java实现 蓝桥杯 算法提高 双十一抢购
    IDEA,PyCharm系列软件常用快捷键
    IDEA,PyCharm系列软件常用快捷键
    IDEA,PyCharm系列软件常用快捷键
  • 原文地址:https://www.cnblogs.com/usherwang/p/14181188.html
Copyright © 2020-2023  润新知