关于Vue那些事

Vue学习笔记

1.webpack.config.js配置

1.下载webpack

npm install webpack@3.6.0 --serve-dev
2.css文件处理 -style-loader

1.安装style-loader

npm install --serve-dev style-loader
  • 注意:style-loader需要放在css-loader的前面

2.疑惑:不对吧?按照我们的逻辑,在处理css文件过程中,应该是css-loader先加载css文件,再由style-loader来进行进一步的处理,为什么会将style-loader放在前面呢?

答:这次因为webpack在读取使用的loader的过程中,是按照从右向左的顺序读取的。在这里插入图片描述

3.lees文件处理 -less-loader

1.安装less-loader -->特别注意的是 版本问题 否则不兼容

npm install --save-dev less-loader@4.1.0 less@3.9.0

2.修改对应的配置文件

  • 添加一个rules选项,用于处理.less文件

在这里插入图片描述

4.el和template区别

1.正常运行之后,我们来考虑另外一个问题:
如果我们希望将data中的数据显示在界面中,就必须是修改index.html 如果我们后面自定义了组件,也必须修改index.html来使用组件

正常运行之后,我们来考虑另外一个问题:

  • 如果我们希望将data中的数据显示在界面中,就必须是修改index.html

  • 如果我们后面自定义了组件,也必须修改index.html来使用组件

  • 但是html模板在之后的开发中,我并不希望手动的来频繁修改,是否可以做到呢?

定义template属性:

  • 在前面的Vue实例中,我们定义了el属性,用于和index.html中的#app进行绑定,让Vue实例之后可以管理它其中的内容
  • 这里,我们可以将div元素中的{{message}}内容删掉,只保留一个基本的id为div的元素
  • 但是如果我依然希望在其中显示{{message}}的内容,应该怎么处理呢?
  • 我们可以再定义一个template属性,代码如下:
new Vue({
	el:'#app',
	template:'<div id="app">{{message}}</div>',
	data:{
	message:'coderwhy'
  }
})
5.vue文件的封装处理
  • 一个组件以一个js对象的形式进行组织和使用的时候是非常不方便的

    • 一方面是编写template模块非常的麻烦

    • 另一个方面是如果样式话,我们写在哪里比较合适呢?

    • 看如下代码:

      <template>
          <h2 class="title">{{name}}</h2>
      </template>
      <script>
          export default {
              name: 'App',
              data() {
                  return {
                      name: 'hello'
                  };
              }
          }
      </script>
      <style scoped>
          .title{
              color: green;
          }
      </style>
      
      • 但是,这个时候这个文件可以被正确的加载吗?

        1.必然不可以,这种特殊的文件以及特殊的格式,必须有人帮助我们处理。

        2.谁来处理呢?vue-loader以及vue-template-compiler。

    • 安装vue-loader和vue-template-compiler

      npm install vue-loader vue-template-compiler --save-dev
      
    • 修改webpack.config.js的配置文件:

      {
        test:/\.vue$\,
        user:{'vue-loader'}
      }
      
6.添加版权的Plugin
  • 我们先来使用一个最简单的插件,为打包的文件添加版权声明该插件名字叫BannerPlugin,属于webpack自带的插件。
module.exports={
    ...
    plugins:[
    new webpack.BannerPlugin('最终版权归于xxxx所有')
   ]
}
  • 重新打包程序:npm run build --> 查看bundle.js文件的头部

    /*!最终版权归于xxxx所有*/
    /*******/(function(modules{//webpackBootstrap
    
7.搭建本地服务器
  • webpack提供了一个可选的本地开发服务器,这个本地服务器基于node.js搭建,内部使用express框架,可以实现我们想要的让浏览器自动刷新显示我们修改后的结果。

  • 不过它是一个单独的模块,在webpack中使用之前需要先安装它

    npm install --save-dev webpack-dev-server@2.9.1
    
  • devserver也是作为webpack中的一个选项,选项本身可以设置如下属性:

    • contentBase:为哪一个文件夹提供本地服务,默认是根文件夹,我们这里要填写./dist

    • port:端口号

    • inline:页面实时刷新

    • historyApiFallback:在SPA页面中,依赖HTML5的history模式

    • webpack.config.js文件配置修改如下:

      devServer:{
      contenBase:'./dist',
      inline:true
      },
      
    • 我们可以再配置另外一个scripts:

      • –open参数表示直接打开浏览器

        "dev":"webpack-dev-server --open"
        

8.Vuecli-脚手架的介绍和初始化项目

  • Vue CLI2初始化项目

    • vue init webpack my-project
  • Vue CLI3初始化项目

    • vue create my-project

报错:Command vue init requires a global addon to be installed.

解决方法:npm install -g @vue/cli-init

npm WARN deprecated vue-cli@2.9.6: This package has been deprecated in favour of @vue/cli
npm WARN deprecated request@2.88.2: request has been deprecated, see https://github.com/request/request/issues/3142
npm WARN deprecated coffee-script@1.12.7: CoffeeScript on NPM has moved to "coffeescript" (no hyphen)
npm WARN deprecated har-validator@5.1.5: this library is no longer supported
npm WARN deprecated uuid@3.4.0: Please upgrade  to version 7 or higher.  Older versions may use Math.random() in certain circ
umstances, which is known to be problematic.  See https://v8.dev/blog/math-random for details.
+ @vue/cli-init@4.5.15
added 252 packages from 206 contributors in 130.243s

报错:vue-cli · Failed to download repo vuejs-templates/webpack: connect ETIMEDOUT 203.208.39.104:44

原因:过vue-cli工具命令vue init webpack vuedemo创建vue项目的时候报错,提示连接超时,应该是下载某个package的时候,需要翻墙,导致出现连接超时。

so -->

解决办法:改为离线创建,我们需要下载github仓库中的vue-templates/webpack,然后解压到本地。下载地址为:https://github.com/vuejs-templates/webpack,下载之后,解压到本地用户目录下的.vue-templates目录下
在这里插入图片描述

注意:下载之后的压缩包为webpack-develop.zip,我们解压之后,需要更改目录名为webpack。用户目录下的目录为.vue-templates,注意文件夹名称前面的点(.)。

我们再进行vue init webpack vuedemo命令的时候,需要带上参数–offline表示离线初始化。

在这里插入图片描述

git 全局配置 以及 环境变量配置

git config --global user.name "名字"
git config --global user.email "邮箱"

环境变量:点击高级系统设置 --> 环境变量 --> 选择用户变量或系统变量中的Path,点击编辑

添加路径:

1.D:\Git\bin

2.D:\Git\mingw64\libexec\git-core

3.D:\Git\mingw64\bin

Vue 按照步骤详解

在这里插入图片描述

9.什么是路由

  • 路由是一个网络工程的术语

  • 路由就是通过互联的网络把信息从源地址传输到目的地址的活动 (路由就是URL到函数的映射)

    • 路由器提供了两种机制:路由和转送
      • 路由是决定数据包从来源目的地的路径
      • 转送将输入端的数据转移到合适的输出端
  • 路由中有一个非常重要的概念交路由表

    • 路由表本质上就是一个映射表,决定了数据包的指向
  • 早期的网站开发整个HTML页面是由服务器来渲染的.
    服务器直接生产渲染好对应的HTML页面, 返回给客户端进行展示.

  • 但是, 一个网站, 这么多页面服务器如何处理呢?

    • 一个页面有自己对应的网址, 也就是URL.
    • URL会发送到服务器, 服务器会通过正则对该URL进行匹配, 并且最后交给一个Controller进行处理.
    • Controller进行各种处理, 最终生成HTML或者数据, 返回给前端.
    • 这就完成了一个IO操作.
  • 上面的这种操作, 就是后端路由.

    • 当我们页面中需要请求不同的路径内容时, 交给服务器来进行处理, 服务器渲染好整个页面, 并且将页面返回给客户顿.
    • 这种情况下渲染好的页面, 不需要单独加载任何的js和css, 可以直接交给浏览器展示, 这样也有利于SEO的优化.
  • 后端路由的缺点:

    • 一种情况是整个页面的模块由后端人员来编写和维护的.
    • 另一种情况是前端开发人员如果要开发页面, 需要通过PHP和Java等语言来编写页面代码.
    • 而且通常情况下HTML代码和数据以及对应的逻辑会混在一起, 编写和维护都是非常糟糕的事情.

10.前后端分离

  • 前后端分离阶段:

    • 随着Ajax的出现, 有了前后端分离的开发模式.
    • 后端只提供API来返回数据, 前端通过Ajax获取数据, 并且可以通过JavaScript将数据渲染到页面中.
    • 这样做最大的优点就是前后端责任的清晰, 后端专注于数据上, 前端专注于交互和可视化上.
    • 并且当移动端(iOS/Android)出现后, 后端不需要进行任何处理, 依然使用之前的一套API即可.
    • 目前很多的网站依然采用这种模式开发.
  • 单页面富应用阶段:

    • 其实SPA最主要的特点就是在前后端分离的基础上加了一层前端路由.
    • 也就是前端来维护一套路由规则.
  • 前端路由的核心是什么呢?

    • 改变URL,但是页面不进行整体的刷新。

    • 如何实现呢?

11.URL的hash

  • URL的hash也就是锚点(#), 本质上是改变window.location的href属性.

  • 我们可以通过直接赋值location.hash来改变href, 但是页面不发生刷新

  • history.pushState({},‘’,‘aadddds’)和history.back()相当于 入栈出栈操作

  • 防止表单重复提交history.replaceState({},‘’,‘about’) 而且返回不了网页

  • history.back() 等价于 history.go(-1)
    新。

  • 如何实现呢?

11.URL的hash

  • URL的hash也就是锚点(#), 本质上是改变window.location的href属性.

  • 我们可以通过直接赋值location.hash来改变href, 但是页面不发生刷新

  • history.pushState({},‘’,‘aadddds’)和history.back()相当于 入栈出栈操作

  • 防止表单重复提交history.replaceState({},‘’,‘about’) 而且返回不了网页

  • history.back() 等价于 history.go(-1)

  • history.forward() 则等价于 history.go(1)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值