• SPA项目开发之首页导航+左侧菜单


    目录

    一、mock的使用

    1.安装mockjs依赖

    2.配置开发环境和生产环境引入导main.js中使用

    3.添加默认接口数据

    4.绑定接口数据

    运行

    二、主界面搭建

    AppMain.vue

     LeftNav.vue

    TopNav.vue

    index.js

    main.js

    三、退出


    一、mock的使用

    mock.js模拟响应ajax请求

    1.安装mockjs依赖

      npm install mockjs -D      #只在开发环境使用

    2.配置开发环境和生产环境引入导main.js中使用

    3.添加默认接口数据

    4.绑定接口数据

    安装mockjs依赖

     成功之后可以在开发工具中看到

    配置开发环境和生产环境引入导main.js中使用

    为了只在开发环境使用mock,而打包到生产环境时自动不使用mock,我们可以在env中做一个配置

    dev.env

    module.exports = merge(prodEnv, {

    NODE_ENV: '"development"',

       MOCK: 'true'

          })

    )prod.env

    module.exports = {

    NODE_ENV: '"production"',

    MOCK: 'false'

          }

    main.js

    process.env.MOCK && require('@/mock')

    添加默认接口数据

    将mock的数据放进src的文件夹

    绑定接口数据

     index.js

    1. import Mock from 'mockjs' //引入mockjs,npm已安装
    2. import action from '@/api/action' //引入请求地址
    3. //全局设置:设置所有ajax请求的超时时间,模拟网络传输耗时
    4. Mock.setup({
    5.     // timeout: 400  //延时400s请求到数据
    6.     timeout: 200 - 400 //延时200-400s请求到数据
    7. })
    8. //引登陆的测试数据,并添加至mockjs
    9. import loginInfo from '@/mock/json/login-mock.js'
    10. let s1 = action.getFullPath('SYSTEM_USER_DOLOGIN')
    11. Mock.mock(s1, "post", loginInfo)
    12. // Mock.mock(s1, /post|get/i, loginInfo)

    运行

    因为是模拟响应ajax请求,后台没有启动,所以是随机的,可能成功和失败,就类似于调用接口,可能成功也可能失败

    二、主界面搭建

    导入要用的图片文件夹

    AppMain.vue

    1. <script>
    2. // 导入组件
    3. import TopNav from '@/components/TopNav.vue'
    4. import LeftNav from '@/components/LeftNav.vue'
    5. // 导出模块
    6. export default {
    7. components: {
    8. TopNav,
    9. LeftNav
    10. },
    11. data() {
    12. return {
    13. asideClass: 'main-aside'
    14. }
    15. },
    16. created() {
    17. this.$root.Bus.$on("collapsed-side", (v) => {
    18. this.asideClass = v ? 'main-aside-collapsed' : 'main-aside';
    19. });
    20. }
    21. };
    22. script>
    23. <style scoped>
    24. .main-container {
    25. height: 100%;
    26. width: 100%;
    27. box-sizing: border-box;
    28. }
    29. .main-aside-collapsed {
    30. /* 在CSS中,通过对某一样式声明! important ,可以更改默认的CSS样式优先级规则,使该条样式属性声明具有最高优先级 */
    31. width: 64px !important;
    32. height: 100%;
    33. background-color: #334157;
    34. margin: 0px;
    35. }
    36. .main-aside {
    37. width: 240px !important;
    38. height: 100%;
    39. background-color: #334157;
    40. margin: 0px;
    41. }
    42. .main-header,
    43. .main-center {
    44. padding: 0px;
    45. border-left: 2px solid #333;
    46. }
    47. style>

     LeftNav.vue