前言

不知道大家有没有这种感觉,现在流行的很多前端技术,基本上都基于webpack编译,当然不是说这种方案不好,在标准的开发流程运行中,这种方式其实也挺不错,管理方便,代码统一。

痛点:项目不是单独针对一个用户,多个用户都略有细微变化,又不需要升级维护,实际调整对应界面即可解决问题。此时,如果用webpack方式,就略嫌麻烦,本来可以直接修改就完事的,还需要再编译,而且也许另一个需求不同还要还原到前面某个状态再调整。

于是我想有没有什么办法可以既可以赶上潮流实现程序的前后端分离,又可以用上流行的vue技术。经过和我心中的大神+导师+好友的沟通(实则我全程围观),有了这套requirejs+vue实现的 模块开发方案。

本方案主框架基本是大神操刀,我纯属记录使用,所以有些地方也是一知半解,尽量表达清楚,也希望有和我同样需求的各位朋友一起共同学习交流。

使用到的技术及插件

requirejs (主要的模块话方案的核心元素) 官网地址:https://requirejs.org/ (这个我基本不了解,就死记了固定格式不知道什么时候才能算是掌握)

vue (javascript框架,本文实现前后端分离的重要组成部分) 官网地址:https://cn.vuejs.org/

View-UI (原名 iView,基于vue的一套 UI框架,提供了栅格化,按钮,表单,表格,弹窗等UI的整套方案,基本够用) 官网地址:https://www.iviewui.com/ (这个貌似近两年才改名,好像是创作人开了公司专门来维护,还出了pro版本,当然还有可以免费使用的,多谢大神贡献)

axios (基于promise用于浏览器和node.js的http客户端)官网地址:https://www.axios.com/

使用注意事项

因为使用的技术都是前端较新技术,所以浏览器兼容基本无视IE,谷歌等浏览器也不易太低。如果需要使用请自行查找解决方案。

哎,之前没写过博客,想写一篇博客真的是不容易,大半天了还没进正题,下面开始正题:

1、框架基本结构

2、入口页面index.html

 <html lang="en">

 <head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<meta name="renderer" content="webkit">
<title>requirejs+vue 管理框架</title>
<script src="libs/require/require.min.js" data-main="src/app"></script>
</head> <body>
<div id="root">
<router-view></router-view>
</div>
</body> </html>

入口页面index.html 的代码

主要代码:

<script src="libs/require/require.min.js" data-main="src/app"></script> require的引入 通过 data-main指明首先要加载的代码为src/app里面的内容

3、app.js配置及启动代码

 define([], function () {

   // 配置require
requirejs.config({
paths: { // 路径别名, 配置路径,简化后续代码引入时写的路径,可以直接用这里配置的别名
// 三方库
'vue': '../libs/vue/vue',
'vue-router': '../libs/vue-router/vue-router',
'axios': '../libs/axios/axios.min',
'iview': '../libs/vue-iview/iview.min', // require 插件
'text': '../libs/require-plugins/text',
'css': '../libs/require-plugins/css.min', // 自己的公用文件
'http': './utils/http',
'user': './utils/user', // 自己的公用组件
'com-page-header': './components/page-header/index'
},
shim: { // 垫片,配置依赖关系
'vue-router': ['vue'], // 加载vue-router时,会自动引入vue,如果vue之前没引入过的话。
'iview': ['vue'],
}
}) // 引入模块,也就是其他文件
require([
'vue', 'vue-router', './routes', 'user', 'iview', 'css!../libs/vue-iview/iview.css',
'css!./app.css'
], function (Vue, VueRouter, routes, user, iview) { // 上面的 Vue参数是从 上面数组 'vue' 里面来的。这个地方是按顺序的。顺序不能错。 // 下面就是 启动一个 vue实例。 let router = new VueRouter({
routes
}) Vue.use(VueRouter)
Vue.use(iview) window.app = new Vue({
router,
}).$mount('#root') if (!user.isLogin()) {
router.push({ path: '/login' })
} }) })

因为我打算打造的是后台管理,所以直接引入了第三方库,vue,vue-router, axios, iview,(这个iView要特别说一下,可以换成其他你习惯的UI,貌似必须要使用这种别名方式才可以使用)

通过上述两个文件,基本上大致确定了程序的框架,通过index.html引入app.js,引入各种需要模块,别名配置,以及设置各个模块的依赖关系,

最后通过require启动vue,挂在路由到#root节点,判断如果没有登陆跳转到登陆入口

这里因为采用了vue的路由,所以后续链接配置主要依附于路由设置

4、routes路由配置


 define([
], function () { // 路由文件,申明路由,哪些页面的。 let loader = (deps) => {
return () => {
if (!Array.isArray(deps)) {
deps = [deps]
}
return new Promise((resolve, reject) => {
require(deps, function (res) {
resolve(res)
})
})
}
} var routes = [
{ path: '/login', component: loader('./pages/login') }, { path: '/test', component: loader('./pages/test') },
{
path: '/',
component: loader('./pages/layout/index'),
children: [
{ path: '/home', component: loader('./pages/home/index') },
{ path: '/user-list', component: loader('./pages/user/user-list') } ]
}, ] return routes })

如上文我们新增test路由

在./pages/目录新增test.js文件内容如下

 define([

 ],function(){
return{
template:"<div>新增一个test页面{{name}}</div>",
data: function() {
return {
name: "hello world"
}
},
created:function(){
//this.$Message.info('This is a info tip'); }
}
});

其中return 返回的对象使用的是vue语法,返回模板,及内容。展示效果如下图所示


至此,基础的框架完成,剩下的内容看自己发挥完善了!

整个项目下载 demo

使用requirejs+vue 打造 无需编译发布便捷修改调整的模块开发方案 (一)的更多相关文章

  1. .NET代码自动编译发布

    .NET代码自动编译发布   因本人一直使用.NET开发,在做项目的时候,每次都要涉及到各个环境的部署问题,手工操作容易出错,并且重复劳动多,所以一直在寻找一个能实现自动化部署的方案. 废话不多讲,先 ...

  2. 无需编译、快速生成 Vue 风格的文档网站

    无需编译.快速生成 Vue 风格的文档网站 https://docsify.js.org/#/#coverpage https://github.com/QingWei-Li/docsify/

  3. vue入门之编译项目

    好记性不如烂笔头,最近又开始学习vue了,编译的过程中遇到几个小坑,特此一记.     首先说一下vue项目如何编译,其实很简单,cd到项目文件夹,然后执行命令: npm run bulid 不过np ...

  4. 教程Xcode 4下编译发布与提交App到AppStore

    地址:http://www.cocoachina.com/bbs/simple/?t55825.html 教程Xcode 4下编译发布与提交App到AppStore 先说一下这个是我在网上看到的一个帖 ...

  5. ASP.Net网站程序在编译发布部署后的后期修改

    ASP.Net网站程序在发布部署后的后期修改 作者:东篱南山 这里说的后期修改是指网站编译发布并部署好之后,对程序进行的修改,即在不能更改现有代码的情况下,更改页面的显示或是更改业务逻辑.一般是在程序 ...

  6. requirejs + vue 项目搭建2

    上篇是年后的项目搭建的,时间比较仓促,感觉有点low 1.gulp-vue 文件对公用js的有依赖,以后别的同事拿去搭其他项目,估计会被喷 2.不支持vue-loader一样写模版语言和es6语法 最 ...

  7. vue.js使用webpack发布,部署到服务器上之后在浏览器中可以查看到vue文件源码

    webpack+vue 2.0打包发布之后,将发布的文件部署到服务器中之后,浏览器中访问的时候会出现一个webpack文件夹,里边会显示vue文件源码 如果不想让vue源文件显示出来,可以在confi ...

  8. Django REST framework+Vue 打造生鲜超市(三)

    四.xadmin后台管理 4.1.xadmin添加富文本插件 (1)xadmin/plugins文件夹下新建文件ueditor.py 代码如下: # xadmin/plugins/ueditor.py ...

  9. Django REST framework+Vue 打造生鲜超市(四)

    五.商品列表页 5.1.django的view实现商品列表页 (1)goods/view_base.py 在goods文件夹下面新建view_base.py,为了区分django和django res ...

随机推荐

  1. pandas(四)

    合并  merge,concat,join pd.merge(df1,df2,on=‘列名’,how='') df1.join(df2,how='outer',on='') pd.concat([df ...

  2. LTS秘钥协商算法分析

    1.根据RCF文档说法 在1-RTT中有两种密钥协商算法(1-RTT ECDHE和 1-RTT PSK  )和4中0-RTT密钥协商方式(0-RTT PSK, 0-RTT ECDH ,0-RTT EC ...

  3. c语言int类型的变量输入一个字符出错

    今天遇到一个C语言的小问题,就是写一个简单的计算器,定义一个%f%c%f的三个变量,作2+3,2-3这种可以不断输入并输入“OFF”跳出循环的计算器功能,便会出现错误: 错误的示例代码如下: #inc ...

  4. tensor flow 线性回归

    # -*- coding: utf-8 -*-"""Spyder Editor This is a temporary script file.tensor flow 之 ...

  5. Linux网络编程综合运用之MiniFtp实现(九)

    上次中实现了FTP命令的映射来避免很多if....else的判断,这次主要是开始实现目录列表的传输,先看一下目前实现的: 数据连接创建好之后则开始进行目录列表的传输了,而要传输目录列表,首先要将目录列 ...

  6. koa-compose 类库学习

    koa-compose 是koa 框架的根源的根源 ,是其实现洋葱包裹型中间件的基础 以下是koa2.X 版本所以依赖的compose 版本 ,其主要核心依赖于new Promise.resolve( ...

  7. 学到了林海峰,武沛齐讲的Day21-完 模块和包

    调用包,会执行包的__init__.py "IF__name__=='__main__':执行当前文件会执行" time random 开始玩高级的了.. 爽

  8. 四十四.Linux基本防护 用户切换与提权 SSH访问控制 SELinux安全 、SSH访问控制 SELinux安全

     1.Linux基本防护措施 与用户相关的配置文件 /etc/passwd   /etc/shadow  /etc/group /etc/gshadow  /etc/login.defs /etc/s ...

  9. 51nod 1459 & 1212

    1459 双限制最短路 #include <stdio.h> #include <iostream> #include <vector> #include < ...

  10. 【概率论】5-1:分布介绍(Special Distribution Introduction)

    title: [概率论]5-1:分布介绍(Special Distribution Introduction) categories: - Mathematic - Probability keywo ...