zoukankan      html  css  js  c++  java
  • vue- 项目之前端页面搭建1

    项目分析

    首页
    导航、登录注册栏、轮播图、地板导航
    登录注册
    选项卡
    免费课
    课程分类、筛选、课程列表
    免费课详情
    课程封面视频、优惠活动倒计时、选项卡
    我的购物车
    全选、商品价格统计
    购买结算

    购买成功

    我的订单

    课时播放页面

    项目搭建

    1. 创建项目目录
      cd 项目目录
      vue init webpack luffy

      # 例如:我要把项目保存在桌面下 ~/Desktop/luffy ,可以如下操作:

      cd Desktop
      vue init webpack luffy

    2. 根据需要在生成项目时,生成选择对应的选项

    3. 根据上面的提示,我们已经把vue项目构建好了,接下来我们可以在pycharm编辑器中把项目打开并根据上面黄色提示,运行测试服务器。

      cd luffy
       npm run dev

    初始化项目

    清除默认的HelloWorld.vue组件和APP.vue中的默认模板代码和默认样式

    <template>
      <div id="app">
      </div>
    </template>
    
    <script>
    
    export default {
      name: 'App',
      components: {
      }
    }
    </script>
    
    <style>
    </style>

    安装路由 vue-router

    1. 下载路由组件
      npm i vue-router -S
    2. 配置路由
      1:在src目录下创建router路由目录。在router目录下创建index.js路由文件
      index.js路由文件中,编写初始化路由对象的代码 .
      import Vue from "vue"
      import Router from "vue-router"
      
      // 这里导入可以让让用户访问的组件
      
      Vue.use(Router);
      
      export default new Router({
        // 设置路由模式为‘history’,去掉默认的#
        mode: "history",
        routes:[
          // 路由列表
      
        ]
      })
    3. 注册路由信息
      打开main.js文件,把router路由规则对象注册到vue中.
      // The Vue build version to load with the `import` command
      // (runtime-only or standalone) has been set in webpack.base.conf with an alias.
      import Vue from 'vue'
      import App from './App'
      import router from './router/index';
      
      Vue.config.productionTip = false
      
      /* eslint-disable no-new */
      new Vue({
        el: '#app',
        router,
        components: { App },
        template: '<App/>'
      });
    4. 在视图中显示路由对应的内容
      在App.vue组件中,添加显示路由对应的内容。
      
      <template>
        <div id="app">
          <router-view/>
        </div>
      </template>
      
      <script>
      export default {
        name: 'App',
        components: {
      
        }
      }
      </script>
      
      <style>
      
      </style>

    引入ElementUI

    1. 对于前端页面布局,我们可以使用一些开源的UI框架来配合开发,Vue开发前端项目中,比较常用的就是ElementUI了。

      ElementUI是饿了么团队开发的一个UI组件框架,这个框架提前帮我们提供了很多已经写好的通用模块,我们可以在Vue项目中引入来使用,这个框架的使用类似于我们前面学习的bootstrap框架,也就是说,我们完全可以把官方文档中的组件代码拿来就用,有定制性的内容,可以直接通过样式进行覆盖修改就可以了。

    2. 中文官网:http://element-cn.eleme.io/#/zh-CN

      文档快速入门:http://element-cn.eleme.io/#/zh-CN/component/quickstart 

    3. 快速安装ElementUI

      项目根目录执行以下命令:

      npm i element-ui -S

      上面的命令等同于 npm install element-ui --save

    4.  

      配置ElementUI到项目中
      在main.js中导入ElementUI,并调用。代码:
      // elementUI 导入
      import ElementUI from 'element-ui';
      import 'element-ui/lib/theme-chalk/index.css';
      // 调用插件
      Vue.use(ElementUI);

    首页

    1. 创建首页组件
      在src/components目录下创建文件 Home.vue
    2. 子组件:在src/components/common目录下创建文件
    3. 创建首页对应的路由

      在router/index.js中引入Home组件,并设置Home组件作为首页路由。

      代码:

      import Vue from "vue"
      import Router from "vue-router"
      
      // 后面这里引入可以被用户访问的页面组件
      import Home from "../components/Home"
      
      Vue.use(Router);
      
      export default new Router({
        // 路由跳转模式,注意使用 history
        mode: "history",
      
        // 路由规则
        routes:[
          {
            // name:"路由别名",
            name:"Home",
            // path: "路由地址",
            path: "/",
            // component: 组件类名,
            component: Home,
          },{
            // name:"路由别名",
            name:"Home",
            // path: "路由地址",
            path: "/home",
            // component: 组件类名,
            component: Home,
          },
        ]
      })
    4. 开发导航子组件
      经过前面的观察,可以发现导航不仅在首页出现,其他页面也有,所以对于这些不同页面中公共的内容,可以创建一个单独的组件目录存放。
      创建src/components/common/Header.vue目录
    5. 在首页引入导航组件
      在Home.vue中,代码:
      <template>
        <div class="home">
          <Header/>
        </div>
      </template>
      
      <script>
        import Header from "./common/Header"
        export default {
          name: "Home",
          data(){
            return {
      
            };
          },
          components:{
            Header,
          }
        }
      </script>
      
      <style scoped>
      
      </style>
    6. 接下来,我们就可以在组件中参考ElementUI文档来进行样式开发了。
      Header.vue中的组件代码:
      <template>
        <div class="header">
          <el-container>
            <el-header>
              <el-row>
                <el-col class="logo" :span="3">
                  <a href="/">
                    <img src="@/assets/head-logo.svg" alt="">
                  </a>
                </el-col>
                <el-col class="nav" :span="16">
                    <el-row>
                      <el-col :span="3"><router-link to="/">免费课</router-link></el-col>
                      <el-col :span="3"><router-link to="/">轻课</router-link></el-col>
                      <el-col :span="3"><router-link to="/">学位课</router-link></el-col>
                      <el-col :span="3"><router-link to="/">题库</router-link></el-col>
                      <el-col :span="3"><router-link to="/">教育</router-link></el-col>
                    </el-row>
                </el-col>
                <el-col class="login-bar" :span="5">
                  <el-row>
                    <el-col class="cart-ico" :span="9">
                      <router-link to="">
                        <b class="goods-number">0</b>
                        <img class="cart-icon" src="@/assets/cart.svg" alt="">
                        <span>购物车</span>
                      </router-link>
                    </el-col>
                    <el-col class="study" :span="8" :offset="2"><router-link to="">学习中心</router-link></el-col>
                    <el-col class="member" :span="5">
                      <el-menu class="el-menu-demo" mode="horizontal">
                        <el-submenu index="2">
                          <template slot="title"><router-link to=""><img src="@/assets/logo@2x.png" alt=""></router-link></template>
                          <el-menu-item index="2-1">我的账户</el-menu-item>
                          <el-menu-item index="2-2">我的订单</el-menu-item>
                          <el-menu-item index="2-3">我的优惠卷</el-menu-item>
                          <el-menu-item index="2-3">退出登录</el-menu-item>
                        </el-submenu>
                      </el-menu>
                    </el-col>
                  </el-row>
                </el-col>
              </el-row>
            </el-header>
          </el-container>
        </div>
      </template>
      
      <script>
        export default {
          name: "Header",
          data(){
            return {
              // 设置一个登录标识,表示是否登录
              token: false,
            };
          }
        }
      </script>
      
      <style scoped>
        .header{
          box-shadow: 0 0.5px 0.5px 0 #c9c9c9;
        }
        .header .el-container{
           1200px;
          margin: 0 auto;
        }
        .el-header{
          height: 80px!important;
          padding:0;
        }
        .logo{
      
        }
        .logo img{
          padding-top: 22px;
        }
      
        .nav{
          margin-top: 22px;
        }
      
        .nav .el-col a{
          display: block;
          text-align: center;
          padding-bottom: 16px;
          padding-left: 5px;
          padding-right: 5px;
          position: relative;
          font-size: 16px;
        }
      
        .login-bar{
          margin-top: 22px;
        }
        .cart-ico{
          position: relative;
          border-radius: 17px;
        }
        .cart-ico:hover{
          background: #f0f0f0;
        }
        .goods-number{
           16px;
          height: 16px;
          line-height: 17px;
          font-size: 12px;
          color: #fff;
          text-align: center;
          background: #fa6240;
          border-radius: 50%;
          transform: scale(.8);
          position: absolute;
          left: 16px;
          top: -1px;
        }
        .cart-icon{
           15px;
          height: auto;
          margin-left: 6px;
        }
        .cart-ico span{
          margin-left: 12px;
        }
        .member img{
           26px;
          height: 26px;
          border-radius: 50%;
          display: inline-block;
        }
        .member img:hover{
          border: 1px solid yellow;
        }
      
      </style>
      View Code

      在App.vue,中设置一些公共样式的代码:

      <style>
        body{
          padding: 0;
          margin:0;
        }
        a{
          text-decoration: none;
          color: #4a4a4a;
        }
        a:hover{
          color: #000;
        }
        .header .el-menu li .el-submenu__title{
          height: 26px!important;
          line-height: 26px!important;
        }
        .el-menu--popup{
          min- 140px;
        }
      </style>

    开发轮播图子组件

    1. 创建Banner.vue组件

    2. 在Home组件中引入Banner子组件
      <template>
        <div class="home">
          <Header/>
          <Banner/>
        </div>
      </template>
      
      <script>
        import Header from "./common/Header"
        import Banner from "./common/Banner"
        export default{
          name:"Home",
          data(){
            return {};
          },
          components:{
            Header,
            Banner,
          }
        }
      </script>
      
      <style scoped>
      .home{
        padding-top: 80px;
      }
      </style>
    3. 接下来,在ElementUI中有对应的轮播图[跑马灯]效果,可以直接提取过来使用。
      注意,图片保存到static目录下。保存在assets目录下的图片等同于保存在static/img目录下。
      对于图片的使用,如果是vue代码中直接要使用的图片,可以保存accets目录下,如果是第三方插件要使用到的图片,需要保存在static目录下。其实本质上来说,所有的图片都是保存在static目录下的,而assets目录下的内容,最终被vue解析成地址的时候,也是在static目录的.
      Banner.vue组件,代码:
      <template>
        <div class="banner">
            <el-carousel trigger="click" height="506px">
              <el-carousel-item v-for="banner in banner_list">
                <a :href="banner.link"><img width="100%" :src="banner.img" alt=""></a>
              </el-carousel-item>
            </el-carousel>
        </div>
      </template>
      
      <script>
        export default {
          name:"Banner",
          data(){
            return {
              banner_list:[
                {link:"http://www.baidu.com",img:"/static/banner/1.png"},
                {link:"http://www.baidu.com",img:"/static/banner/2.png"},
                {link:"http://www.baidu.com",img:"/static/banner/3.png"},
              ]
            };
          }
        }
      </script>
      
      <style scoped>
      
      </style>

    页脚创建

    1. 创建页脚组件文件
    2. 在Home组件中引入Footer组件
      <template>
        <div class="home">
          <Header/>
          <Banner/>
          <Footer/>
        </div>
      </template>
      
      <script>
        import Header from "./common/Header"
        import Banner from "./common/Banner"
        import Footer from "./common/Footer"
        export default{
          name:"Home",
          data(){
            return {};
          },
          components:{
            Header,
            Banner,
            Footer,
          }
        }
      </script>
      
      <style scoped>
      .home{
        padding-top: 80px;
      }
      </style>
    3. 编写页脚样式
      在页脚的Footer.vue中编写代码:
      <template>
        <div class="footer">
          <el-container>
            <el-row>
              <el-col :span="4"><router-link to="">关于我们</router-link></el-col>
              <el-col :span="4"><router-link to="">联系我们</router-link></el-col>
              <el-col :span="4"><router-link to="">商务合作</router-link></el-col>
              <el-col :span="4"><router-link to="">帮助中心</router-link></el-col>
              <el-col :span="4"><router-link to="">意见反馈</router-link></el-col>
              <el-col :span="4"><router-link to="">新手指南</router-link></el-col>
              <el-col :span="24"><p class="copyright">Copyright © luffycity.com版权所有 | 京ICP备17072161号-1</p></el-col>
            </el-row>
          </el-container>
        </div>
      </template>
      
      <script>
        export default {
          name:"Footer",
          data(){
            return {}
          }
        }
      </script>
      
      
      <style scoped>
      .footer{
         100%;
        height: 128px;
        background: #25292e;
      }
      .footer .el-container{
         1200px;
        margin: auto;
      }
      .footer .el-row {
        align-items: center;
        padding: 0 200px;
        padding-bottom: 15px;
         100%;
        margin-top: 38px;
      }
      .footer .el-row a{
        color: #fff;
        font-size: 14px;
      }
      .footer .el-row .copyright{
        text-align: center;
        color: #fff;
        font-size: 14px;
      }
      </style>

    免费课

    1. 在组件目录components下创建Couses.vue组件文件,代码如下:
      <template>
        <div class="courses">
      
        </div>
      </template>
      
      <script>
        export default {
          name:"Courses",
          data(){
            return {
      
            }
          }
        }
      </script>
      
      
      <style scoped>
        
      </style>
    2. 在router/index.js路由中注册路由


      import Vue from "vue" import Router from "vue-router" // 导入可以被用户访问的组件 import Home from "@/components/Home" import Courses from "@/components/Courses" Vue.use(Router); export default new Router({ mode: "history", routes:[ // 路由列表 { path: "/", name: "Home", component:Home, }, { path: "/home", name: "Home", component:Home, }, { path: "/courses", name: "Courses", component:Courses, }, ] })

      

  • 相关阅读:
    Go 语言简介(下)— 特性
    Array.length vs Array.prototype.length
    【转】javascript Object使用Array的方法
    【转】大话程序猿眼里的高并发架构
    【转】The magic behind array length property
    【转】Build Your own Simplified AngularJS in 200 Lines of JavaScript
    【转】在 2016 年做 PHP 开发是一种什么样的体验?(一)
    【转】大话程序猿眼里的高并发
    php通过token验证表单重复提交
    windows 杀进程软件
  • 原文地址:https://www.cnblogs.com/yang950718/p/10786794.html
Copyright © 2011-2022 走看看