vue系列之requireJs中引入vue-router的方法


Posted in Javascript onJuly 18, 2018

requireJs简介

参数配置

requireJS 常用的方法与命令也就两个,因此requireJS使用起来非常简单。

require
define

其中define是用于定义模块,而require是用于载入模块以及载入配置文件。

define([id,deps,] callback);
require(deps[,callback]);

加载配置文件

独立的引入配置文件也有两种方式,一种是通过script标签加载外部JS文件形式:

<script src="js/require.js"></script>
<script src="js/app.js"></script>

另一种方式则是使用 require 提供的 data-main 属性,该属性是直接写在引入require.js的script标签上,在require.js 加载完毕时,会自动去加载配置文件 app.js。

<script data-main="js/app" src="js/require.js"></script>

通过 data-main 去加载入口文件,便会使配置对象中的 baseUrl 属性默认指向地址改为 app.js 所在的位置,相比之下我更加推荐这种方式,因为它更可能的方便快捷。

<script data-main="js/app.js" src="js/require.js"></script>

注意:你在main.js中所设置的脚本是异步加载的。所以如果你在页面中配置了其它JS加载,则不能保证它们所依赖的JS已经加载成功。

常用参数配置

urlArgs

RequireJS获取资源时附加在URL后面的额外的query参数。作为浏览器或服务器未正确配置时的“cache bust”手段很有用。使用cache bust配置的一个示例:
javascript:;urlArgs: "bust=" + (new Date()).getTime()
在开发中这很有用,但请记得在部署到生成环境之前移除它。

deps

用于声明require.js在加载完成时便会自动加载的模块,值是一个数组,数组元素便是模块名。

config

config属性可以为模块配置额外的参数设定,其使用格式就是以模块名或者模块ID为key,然后具体的参数为value。

shim

shim为那些没有使用define()来声明依赖关系、设置模块的"浏览器全局变量注入"型脚本做依赖和导出配置。

require.config({
  baseUrl : "./src",
  paths :{
    jquery:"./lib/jquery.min",
    vue:"./lib/vue",
    vueResource:"./lib/vue-resource.min",
    vueX:"./lib/vuex",
    api :"./api/index",
    lodash : "./lib/lodash.min",
    bootstrap : "./assets/js/bootstrap/js/bootstrap.min",
    ripples : "./assets/js/bootstrap-material-design/js/ripples.min",
    material:"./assets/js/bootstrap-material-design/js/material.min"
  },
  shim : {
    bootstrap : ['jquery'],
    ripples:['jquery'],
    material:['jquery'],
  },
  packages: [
    {
      name: 'components',
      location: 'component',
      main: 'components'
    },
    {
      name : "vuex",
      location :"vuex",
      main : "vuex"
    }
  ]
});

vue项目

requirejs配置

require.config({
  baseUrl : "./src",
  paths :{
    vue:"./lib/vue",
    vueRouter: "./lib/vue-router",
    promise: "./lib/q",
    router: "./js/router",
    header: "./js/components/header"
  },
  shim : {
    vueRouter : ['vue']
  }
});

router配置

define(["resolve"], function(resolve){
  return [
    {
      path: "/home",
      name: "home",
      component: resolve("../js/xx.js")
    },
    {
      path: "/news",
      name: "news",
      component: resolve("../js/xx.js")
    }
  ];
});

resolve.js

define(["require", "promise"], function(require, Q){
  var resolve = function(dep) {
    return function() {
      if (!(dep instanceof Array)) {
        dep = [dep];
      }
      var deferred = Q.defer();
      require(dep, function(res) {
        deferred.resolve(res);
      });
      return deferred.promise;
    };
  };
  return resolve;
});

index

<body>
  <header></header>
  <router-view></router-view>
</body>
require(["vue", "vueRouter", "router", "header"], function(vue, vueRouter, router, header) {
  vue.use(vueRouter);
  var routes = new vueRouter({
    routes: router
  });
  new Vue({
    router: routes,
    data: function(){
      return {
        aa: true
      };
    }
  }).$mount("body");
});

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
一个用js实现控制台控件的代码
Sep 04 Javascript
IE7中javascript操作CheckBox的checked=true不打勾的解决方法
Dec 07 Javascript
Jquery实战_读书笔记1—选择jQuery
Jan 22 Javascript
禁止页面刷新让F5快捷键及右键都无效
Jan 22 Javascript
BootstrapTable与KnockoutJS相结合实现增删改查功能【二】
May 10 Javascript
HTML中使背景图片自适应浏览器大小实例详解
Apr 06 Javascript
Javascript ES6中对象类型Sets的介绍与使用详解
Jul 17 Javascript
node实现定时发送邮件的示例代码
Aug 26 Javascript
Vue中 key keep-alive的实现原理
Sep 18 Javascript
vue实现的树形结构加多选框示例
Feb 02 Javascript
jquery实现吸顶导航效果
Jan 08 jQuery
JavaScript实现简单的计算器
Jan 16 Javascript
Vue隐藏显示、只读实例代码
Jul 18 #Javascript
详解vue中axios的封装
Jul 18 #Javascript
详解vue2.0监听属性的使用心得及搭配计算属性的使用
Jul 18 #Javascript
微信小程序将字符串生成二维码图片的操作方法
Jul 17 #Javascript
使用Vue实现图片上传的三种方式
Jul 17 #Javascript
vue的token刷新处理的方法
Jul 17 #Javascript
vue 权限认证token的实现方法
Jul 17 #Javascript
You might like
在字符串中把网址改成超级链接
2006/10/09 PHP
php 运行效率总结(提示程序速度)
2009/11/26 PHP
写一段简单的PHP建立文件夹代码
2015/01/06 PHP
PHP用FTP类上传文件视频等的简单实现方法
2016/09/23 PHP
centos+php+coreseek+sphinx+mysql之一coreseek安装篇
2016/10/25 PHP
学习YUI.Ext 第七天--关于View&amp;JSONView
2007/03/10 Javascript
用JavaScript玩转游戏物理(一)运动学模拟与粒子系统
2010/06/19 Javascript
javascript开发随笔一 preventDefault的必要
2011/11/25 Javascript
jQuery写的日历(包括日历的样式及功能)
2013/04/23 Javascript
JavaScript 浏览器对象模型BOM使用介绍
2015/04/13 Javascript
JavaScript编写连连看小游戏
2015/07/07 Javascript
Jquery操作cookie记住用户名
2016/03/29 Javascript
如何在Linux上安装Node.js
2016/04/01 Javascript
jQuery用noConflict代替$的实现方法
2017/04/12 jQuery
Node.js编写CLI的实例详解
2017/05/17 Javascript
使用JQuery实现图片轮播效果的实例(推荐)
2017/10/24 jQuery
vue 表单之通过v-model绑定单选按钮radio
2019/05/13 Javascript
微信小程序开发之左右分栏效果的实例代码
2019/05/20 Javascript
如何对react hooks进行单元测试的方法
2019/08/14 Javascript
解决在Vue中使用axios用form表单出现的问题
2019/10/30 Javascript
JavaScript函数Call、Apply原理实例解析
2020/02/17 Javascript
Python标准库os.path包、glob包使用实例
2014/11/25 Python
wxpython中Textctrl回车事件无效的解决方法
2016/07/21 Python
Django1.7+python 2.78+pycharm配置mysql数据库
2016/10/09 Python
python利用标准库如何获取本地IP示例详解
2017/11/01 Python
Python实现模拟浏览器请求及会话保持操作示例
2018/07/30 Python
Python os.access()用法实例
2019/02/18 Python
在python Numpy中求向量和矩阵的范数实例
2019/08/26 Python
Python读取csv文件实例解析
2019/12/30 Python
pandas 按日期范围筛选数据的实现
2021/02/20 Python
python定义具名元组实例操作
2021/02/28 Python
深入了解canvas在移动端绘制模糊的问题解决
2019/04/30 HTML / CSS
html5拖拽应用记录及注意点
2020/05/27 HTML / CSS
企业文化标语大全
2014/06/10 职场文书
学校元旦晚会开场白
2014/12/14 职场文书
2015年感恩节活动总结
2015/03/24 职场文书