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 相关文章推荐
html下载本地
Jun 19 Javascript
JS二维数组的定义说明
Mar 03 Javascript
jquery实现带缩略图的可定制高度画廊效果(5种)
Aug 28 Javascript
jquery实现清新实用的网页菜单效果
Aug 28 Javascript
基于jQuery实现点击弹出层实例代码
Jan 01 Javascript
javascript 利用arguments实现可变长参数
Nov 21 Javascript
vue2.0实战之基础入门(1)
Mar 27 Javascript
JS中精巧的自动柯里化实现方法
Dec 12 Javascript
详解vuejs2.0 select 动态绑定下拉框支持多选
Apr 25 Javascript
vue.js表单验证插件(vee-validate)的使用教程详解
May 23 Javascript
Jquery实现获取子元素的方法分析
Aug 24 jQuery
vue实现标签云效果的方法详解
Aug 28 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
PHP+MySQL5.0中文乱码解决方法
2006/11/20 PHP
PHP 获取目录下的图片并随机显示的代码
2009/12/28 PHP
PHP 中 DOMDocument保存xml时中文出现乱码问题的解决方案
2016/09/19 PHP
Mac下关于PHP环境和扩展的安装详解
2019/10/17 PHP
JS获取客户端IP地址、MAC和主机名的7个方法汇总
2014/07/21 Javascript
浅谈类似于(function(){}).call()的js语句
2015/03/30 Javascript
js实现类似菜单风格的TAB选项卡效果代码
2015/08/28 Javascript
详细分析Javascript中创建对象的四种方式
2016/08/17 Javascript
Angular 2应用的8个主要构造块有哪些
2016/10/17 Javascript
Vue.js开发环境快速搭建教程
2017/03/17 Javascript
详解Angular 开发环境搭建
2017/06/22 Javascript
Angular.js中$resource高大上的数据交互详解
2017/07/30 Javascript
小程序文字跑马灯效果
2018/12/28 Javascript
解决vue组件props传值对象获取不到的问题
2019/06/06 Javascript
angularjs请求数据的方法示例
2019/08/06 Javascript
Element-UI中关于table表格的那些骚操作(小结)
2019/08/15 Javascript
基于 Vue 的 Electron 项目搭建过程图文详解
2020/07/22 Javascript
解决vue加scoped后就无法修改vant的UI组件的样式问题
2020/09/07 Javascript
基于VUE实现简单的学生信息管理系统
2021/01/13 Vue.js
Python使用urllib2获取网络资源实例讲解
2013/12/02 Python
python安装教程 Pycharm安装详细教程
2017/05/02 Python
python pandas dataframe 行列选择,切片操作方法
2018/04/10 Python
python实现朴素贝叶斯算法
2018/11/19 Python
对Python 多线程统计所有csv文件的行数方法详解
2019/02/12 Python
Python查找最长不包含重复字符的子字符串算法示例
2019/02/13 Python
python中的TCP(传输控制协议)用法实例分析
2019/11/15 Python
python向图片里添加文字
2019/11/26 Python
opencv之为图像添加边界的方法示例
2019/12/26 Python
pytorch 限制GPU使用效率详解(计算效率)
2020/06/27 Python
Pycharm调试程序技巧小结
2020/08/08 Python
CSS3中:nth-child和:nth-of-type的区别深入理解
2014/03/10 HTML / CSS
英国骑行、跑步、游泳、铁人三项运动装备专卖店:Wiggle
2016/08/23 全球购物
美国肌肉和力量商店:Muscle & Strength
2019/06/22 全球购物
党的群众路线教育实践活动心得体会(医院)
2014/11/03 职场文书
2014年法务工作总结
2014/12/11 职场文书
病危通知单
2015/04/17 职场文书