在普通页面中使用render函数渲染组件

render:function(createElements){//createElements是一个方法,调用它,能够把指定的组件模板,渲染成为HTML结构,这里面return的结果,会替换页面中el指定的那个容器

return createElements(login)

}

在webpack中配置.vue组件页面的解析

  1. 运行cnpm i vue -S将vue安装为运行依赖;

  2. 运行cnpm i vue-loader vue-template-compiler -D将解析转换vue的包安装为开发依赖;

  3. 运行cnpm i style-loader css-loader -D将解析转换CSS的包安装为开发依赖,因为.vue文件中会写CSS样式;

  4. 在webpack.config.js中,添加如下module和plugins规则:

​
module: {
​
  rules: [
​
    { test: /\.css$/, use: ['style-loader', 'css-loader'] },
​
    { test: /\.vue$/, use: 'vue-loader' }
​
  ]
​
}
const VueLoaderPlugin = require('vue-loader/lib/plugin')
​
module.exports = {
// ...
plugins: [
  new VueLoaderPlugin()
]
}
// 总结梳理: webpack 中如何使用 vue :
// 1. 安装vue的包: cnpm i vue -S
// 2. 由于 在 webpack 中,推荐使用 .vue 这个组件模板文件定义组件,所以,需要安装 能解析这种文件的 loader   cnpm i vue-loader vue-template-complier -D
// 3. 在 main.js 中,导入 vue 模块 import Vue from 'vue'
// 4. 定义一个 .vue 结尾的组件,其中,组件有三部分组成: template script style
// 5. 使用 import login from './login.vue' 导入这个组件
// 6. 创建 vm 的实例 var vm = new Vue({ el: '#app', render: c => c(login) })
// 7. 在页面中创建一个 id 为 app 的 div 元素,作为我们 vm 实例要控制的区域;
注意:在一个页面中只能有一个export default,可以有export,但是export只能使用{}接收,这个叫按需导出,export可以向外暴露多个成员,严格按照暴露的名称{}进行接收,但是可以用as起一个别名。
  1. 创建App.js组件页面:

​
  <template>
​
    <!-- 注意:在 .vue 的组件中,template 中必须有且只有唯一的根元素进行包裹,一般都用 div 当作唯一的根元素 -->
​
    <div>
​
      <h1>这是APP组件 - {{msg}}</h1>
​
      <h3>我是h3</h3>
​
    </div>
​
  </template>
​
​
​
  <script>
​
  // 注意:在 .vue 的组件中,通过 script 标签来定义组件的行为,需要使用 ES6 中提供的 export default 方式,导出一个vue实例对象
​
  export default {
​
    data() {
​
      return {
​
        msg: 'OK'
​
      }
​
    }
​
  }
​
  </script>
​
​
​
  <style scoped>
​
  h1 {
​
    color: red;
​
  }
​
  </style>
​
  1. 创建main.js入口文件:

​
  // 导入 Vue 组件
​
  import Vue from 'vue'
​
​
​
  // 导入 App组件
​
  import App from './components/App.vue'
​
​
​
  // 创建一个 Vue 实例,使用 render 函数,渲染指定的组件
​
  var vm = new Vue({
​
    el: '#app',
​
    render: c => c(App)
​
  });
​

在使用webpack构建的Vue项目中使用模板对象?

  1. 在webpack.config.js中添加resolve属性:

resolve: {
  alias: {
    'vue$': 'vue/dist/vue.js'
  }
}

ES6中语法使用总结

  1. 使用 export default 和 export 导出模块中的成员; 对应ES5中的 module.exports 和 export

  2. 使用 import ** from ** 和 import '路径' 还有 import {a, b} from '模块标识' 导入其他模块

  3. 使用箭头函数:(a, b)=> { return a-b; }

在vue组件页面中,集成vue-router路由模块

vue-router官网

  1. 导入路由模块:

​
import VueRouter from 'vue-router'
​
  1. 安装路由模块:

​
Vue.use(VueRouter);
​
  1. 导入需要展示的组件:

​
import login from './components/account/login.vue'
​
import register from './components/account/register.vue'
​
  1. 创建路由对象:

​
var router = new VueRouter({
​
routes: [
​
  { path: '/', redirect: '/login' },
​
  { path: '/login', component: login },
​
  { path: '/register', component: register }
​
]
​
});
​
  1. 将路由对象,挂载到 Vue 实例上:

​
var vm = new Vue({
​
el: '#app',
​
// render: c => { return c(App) }
​
render(c) {
​
  return c(App);
​
},
​
router // 将路由对象,挂载到 Vue 实例上
​
});
​
  1. 改造App.vue组件,在 template 中,添加router-link和router-view:

​
  <router-link to="/login">登录</router-link>
​
  <router-link to="/register">注册</router-link>
​
​
​
  <router-view></router-view>
​

组件中的css作用域问题

抽离路由为单独的模块

使用 饿了么的 MintUI 组件

Github 仓储地址

Mint-UI官方文档

  1. 导入所有MintUI组件:

​
import MintUI from 'mint-ui'
​
  1. 导入样式表:

​
import 'mint-ui/lib/style.css'
​
  1. 在 vue 中使用 MintUI:

​
Vue.use(MintUI)
​
  1. 使用的例子:

​
<mt-button type="primary" size="large">primary</mt-button>
​

使用 MUI 组件

官网首页

文档地址

  1. 导入 MUI 的样式表:

​
import '../lib/mui/css/mui.min.css'
​
  1. 在webpack.config.js中添加新的loader规则:

​
{ test: /\.(png|jpg|gif|ttf)$/, use: 'url-loader' }
​
  1. 根据官方提供的文档和example,尝试使用相关的组件

将项目源码托管到oschina中

  1. 点击头像 -> 修改资料 -> SSH公钥 如何生成SSH公钥

  2. 创建自己的空仓储,使用 git config --global user.name "用户名" 和 git config --global user.email ***@**.com 来全局配置提交时用户的名称和邮箱

  3. 使用 git init 在本地初始化项目

  4. 使用 touch README.md 和 touch .gitignore 来创建项目的说明文件和忽略文件;

  5. 使用 git add . 将所有文件托管到 git 中

  6. 使用 git commit -m "init project" 将项目进行本地提交

  7. 使用 git remote add origin 仓储地址将本地项目和远程仓储连接,并使用origin最为远程仓储的别名

  8. 使用 git push -u origin master 将本地代码push到仓储中

App.vue 组件的基本设置

  1. 头部的固定导航栏使用 Mint-UI 的 Header 组件;

  2. 底部的页签使用 mui 的 tabbar;

  3. 购物车的图标,使用 icons-extra 中的 mui-icon-extra mui-icon-extra-cart,同时,应该把其依赖的字体图标文件 mui-icons-extra.ttf,复制到 fonts 目录下!

  4. 将底部的页签,改造成 router-link 来实现单页面的切换;

  5. Tab Bar 路由激活时候设置高亮的两种方式:

  • 全局设置样式如下:

​
.router-link-active{
​
    color:#007aff !important;
​
  }
​
  • 或者在 new VueRouter 的时候,通过 linkActiveClass 来指定高亮的类:

​
// 创建路由对象
​
  var router = new VueRouter({
​
    routes: [
​
      { path: '/', redirect: '/home' }
​
    ],
​
    linkActiveClass: 'mui-active'
​
  });
​

实现 tabbar 页签不同组件页面的切换

  1. 将 tabbar 改造成 router-link 形式,并指定每个连接的 to 属性;

  2. 在入口文件中导入需要展示的组件,并创建路由对象:

​
  // 导入需要展示的组件
​
  import Home from './components/home/home.vue'
​
  import Member from './components/member/member.vue'
​
  import Shopcar from './components/shopcar/shopcar.vue'
​
  import Search from './components/search/search.vue'
​
​
​
  // 创建路由对象
​
  var router = new VueRouter({
​
    routes: [
​
      { path: '/', redirect: '/home' },
​
      { path: '/home', component: Home },
​
      { path: '/member', component: Member },
​
      { path: '/shopcar', component: Shopcar },
​
      { path: '/search', component: Search }
​
    ],
​
    linkActiveClass: 'mui-active'
​
  });
​

使用 mt-swipe 轮播图组件

  1. 假数据:

​
lunbo: [
​
      'http://www.itcast.cn/images/slidead/BEIJING/2017440109442800.jpg',
​
      'http://www.itcast.cn/images/slidead/BEIJING/2017511009514700.jpg',
​
      'http://www.itcast.cn/images/slidead/BEIJING/2017421414422600.jpg'
​
    ]
​
  1. 引入轮播图组件:

​
<!-- Mint-UI 轮播图组件 -->
​
  <div class="home-swipe">
​
    <mt-swipe :auto="4000">
​
      <mt-swipe-item v-for="(item, i) in lunbo" :key="i">
​
        <img :src="item" alt="">
​
      </mt-swipe-item>
​
    </mt-swipe>
​
  </div>
​
</div>
​

在.vue组件中使用vue-resource获取数据

  1. 运行cnpm i vue-resource -S安装模块

  2. 导入 vue-resource 组件

​
import VueResource from 'vue-resource'
​
  1. 在vue中使用 vue-resource 组件

​
Vue.use(VueResource);
​

webpack(2)的更多相关文章

  1. 深入学习webpack(一)

    深入学习webpack(一) 模块化的相关库和工具已经很多了,包括require.js.sea.js和一些工程化工具webpack.gulp.grant.那么我们该如何选择呢? 其实,我们只需要掌握了 ...

  2. 玩转webpack(二):webpack的核心对象

    欢迎大家前往云+社区,获取更多腾讯海量技术实践干货哦~ 作者介绍:陈柏信,腾讯前端开发,目前主要负责手Q游戏中心业务开发,以及项目相关的技术升级.架构优化等工作. 前言 webpack 是一个强大的模 ...

  3. vue(9)—— 组件化开发 - webpack(3)

    前面两个终于把webpack相关配置解析完了.现在终于进入vue的开发了 vue组件化开发预热 前期准备 创建如下项目: app.js: footer.js: main.js: webpack.con ...

  4. vue(8)—— 组件化开发 - webpack(2)

    webpack的常用loder和插件 loder和插件是什么,现在暂且不表,看到后面你就懂了 引入css问题 直接用link标签导入css 在前面的 vue(7)—— 组件化开发 — webpack( ...

  5. 深入学习webpack(二)

    深入学习webpack(二) 在深入学习webpack(一)中,我通过一个例子介绍了webpack的基本使用方法,下面将更为系统的学习webpack的基本概念,对于一门技术的掌握我认为系统化还是很重要 ...

  6. 走近webpack(5)--devtool及babel的使用

    这一章咱们来说一下如何使用babel以及如何用webpack调试代码.这是基础篇的最后一章,这些文章只是罗列的给大家讲解了在一些场景中webpack怎样使用,这章结束后会给大家讲解一下如何在我们实际的 ...

  7. 走近webpack(0)--正文之前的故事

    在前端工作的过程中,只要你接触过vue,angular,react,gulp就一定知道webpack或者听说过或者使用过webpack,但是或许你对webpack的使用方法并不是十分了解,只是会用写好 ...

  8. 走进webpack(1)--环境拆分及模块化

    初级的文章和demo已经基本完成了,代码也已经上传到了我的github上,如果你对webpack的使用并不是十分了解,那么建议你回头看下走近系列,里面包括了当前项目中使用频繁的插件,loader的讲解 ...

  9. 走进webpack(2)--第三方框架(类库)的引入及抽离

    在当代的前端开发中,很少会用原生JS来开发页面,最基本的都会使用jQuery来节省我们开发的时间和效率,而angular,vue,react的出现更是为前端开发者带来了福音.那么这篇文章就说说如何用w ...

  10. vue(7)—— 组件化开发 — webpack(1)

    引子 在研究完前面的vue开发后,其实已经可以自己开发点东西了,靠前面的指令集,组件,还有vue-router,还有异步请求这些知识点,是完全可以开发出来的,完全可以达到时下前后端分离的效果. 但是, ...

随机推荐

  1. BZOJ4936:match (不错的分治)

    给你一个由小写字母组成的字符串s,要你构造一个字典序最小的(认为左括号的字典序比右括号小)合法的括号 序列与这个字符串匹配,字符串和括号序列匹配定义为:首先长度必须相等,其次对于一对匹配的左括号和右括 ...

  2. hadoop应用场景

    大数据量存储:分布式存储 日志处理: Hadoop擅长这个 海量计算: 并行计算 ETL:数据抽取到oracle.mysql.DB2.mongdb及主流数据库 使用HBase做数据分析: 用扩展性应对 ...

  3. netty学习2

    一.Netty分层设计 Netty 采用了比较典型的三层网络架构进行设计,逻辑架构图如下所示: #第一层,Reactor 通信调度层,它由一系列辅助类完成,包括 Reactor 线程 NioEvent ...

  4. HDU3466(01背包变种)

    Proud Merchants Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/65536 K (Java/Others) ...

  5. attachEvent与addEventListener的区别 真实例子

    转自:https://www.cnblogs.com/Rosefxd/p/4921330.html 近日遇到attachEvent与addEventListener两个事件,哟,果断研究一下~~ 先普 ...

  6. Android开发—— 传递数据

    一:使用静态变量传递数据 (1)静态变量传递数据,在目标Activity中声明静态变量,然后使用setText()方法将静态变量的值导出即可: (2)静态变量传递数据,在主Activity中对目标Ac ...

  7. 【Data Structure & Algorithm】在排序数组中查找和为定值的两个数

    在排序数组中查找和为定值的两个数 题目:输入一个已经按升序排序过的数组和一个数字,在数组中查找两个数,使得它们的和正好是输入的那个数字,要求时间复杂度是O(n).如果有多对数字的和等于输入的数字,输出 ...

  8. 4-1eclipse & 4-2在eclipse下开发Java

    ecplise是一款继承的开发工具,可以开发我们的java程序. 下载地址: https://www.eclipse.org/downloads/ 视频中ecplise的版本 安装Ecplise: 默 ...

  9. 1-2关键字 & 2-1什么是变量

    2-1什么是变量 驼峰第一个字母首字母小写后面字母首字母大写 Pascal命名规范:

  10. Excel2007格式分析和XML解析

    1.    excel2007是使用xml格式来存储的,把一个excel文件后缀改为.zip,打开之后就直接可以看到一个excel文件对应的xml格式的文件了. 这里面有几部分 对于docProps目 ...