
前端
Piconjo_Official
你的生活我的梦.
展开
-
Redux的介绍、安装及基本使用
一、概述什么是ReduxRedux是一个JavaScript状态容器 提供可预测化的状态管理简单来说 就是存储数据的(和Vuex类似)Redux可以构建一致化的应用 运行于不同的环境(客户端、服务器、原生应用) 并且易于测试不仅于此 它还提供了超爽的开发体验除了和 React 一起用外Redux还支持其它界面库它体小精悍(包括依赖只有2kB)为什么要使用Redux随着JavaScript单页面开发日趋复杂 JavaScript需要管理更多的state(状态)这些state可能包括服务器响原创 2020-06-13 15:46:04 · 3238 阅读 · 0 评论 -
ES6的fetch API的使用和第三方fetch-jsonp的使用
还记得去年这个时候接手学长留下来的微信小程序项目 当时看到学长用的是fetch获取数据 还以为是微信提供的API…????一、什么是fetchFetch API提供了一个JavaScript接口 用于访问和操纵 HTTP 管道的一些具体部分 例如请求和响应它还提供了一个全局fetch()方法 该方法提供了一种简单 合理的方式来跨网络异步获取资源因此 简单来说就是Ajax的替代品 也可以用于获取数据Fetch API由于是基于Promise封装的 因此解决了Ajax的回调地狱问题 提高了代码的可读性原创 2020-06-11 14:40:29 · 5746 阅读 · 0 评论 -
React UI组件库Ant Design的安装、使用及按需导入
Ant Design简称Antd 是基于Ant Design设计体系的React UI组件库 主要用于研发企业级中后台产品安装npm install antd -S使用导入组件:import { DatePicker } from 'antd';全局导入样式:import 'antd/dist/antd.css'; // or 'antd/dist/antd.less'然后在组件中直接用标签形式引用即可:<DatePicker></DatePicker>imp原创 2020-06-10 13:49:41 · 3045 阅读 · 0 评论 -
React路由模块react-router-dom的安装及基本使用、传递路由参数
一、路由模块在React项目中 若要实现页面的跳转 需使用路由而react-router-dom正是React推荐的常用路由模块安装npm install react-router-dom按需导入react-router-dom路由模块HashRouter是路由的根容器 所有和路由相关的东西都要包裹在HashRouter内部 且一个网站只需要使用一次HashRouterRouter是路由规则(rules) 其上有两个重要属性:path和componentLink表示路由链接 类似于Vue中原创 2020-06-10 10:42:51 · 3546 阅读 · 0 评论 -
在React中使用Context在多个嵌套组件内共享数据
Context特性若组件多层包裹 且外层属性或方法要传递给内层的组件 则传递会变得比较麻烦比如:import React from 'react'; export default class Parent extends React.Component { constructor(props) { super(props); this.state = { mycolor:"red" } } rende原创 2020-06-10 08:17:30 · 4181 阅读 · 0 评论 -
三种方式在React中解决绑定this的作用域问题并传参
在React中时常会遇到this指向的作用域问题 从而导致报错先来个Demo:功能很简单 点击按钮改变文字import React from 'react';export default class BindWithThis extends React.Component { constructor(props) { super(props); this.state = { msg:"BindWithThis" }原创 2020-06-10 07:25:39 · 3235 阅读 · 0 评论 -
React学习之旅Part9:在React中使用defaultProps设置默认值和prop-types类型校验
一、defaultProps默认值在组件内部 有时 有一些数据必须存在 程序的正常运行依赖着这些数据 而这些数据需要外界传入此时 即使用户并没有传递参数 组件内部也要提供默认值 以供程序的正常运行因为用户若不传递数据 则程序可能会出问题在React中 可以通过静态的defaultProps属性来设置组件的默认值比如:import React from 'react';export default class Hello extends React.Component{ constr原创 2020-06-09 18:30:42 · 3122 阅读 · 0 评论 -
React学习之旅Part8:通过例子和示意图弄懂React的生命周期
什么是生命周期每个组件的实例从创建到运行再到销毁 在这个过程中的特定阶段会触发一系列的事件这些事件就叫做组件的生命周期函数React的组件生命周期React组件的生命周期分为三部分:创建 运行 销毁组件创建阶段(在组件的整个生命周期中只会被执行一次)componentWillMount / 组件将要挂载render / 渲染虚拟DOM元素componentDidMount / 组件已经挂载组件运行阶段(根据props属性或state属性的改变 有选择性地执行0或多次若属性从创建开原创 2020-06-09 16:12:39 · 7931 阅读 · 1 评论 -
React学习之旅Part7:React绑定事件和使用setState()修改state的数据、React实现双向数据绑定
一、绑定事件在React中 所绑定的事件的名称都是由React提供的 因此 事件名称必须按照一定的规范名称的首字母必须是大写的(即小驼峰命名法) 例如onClick或onMouseEnter且在为事件绑定函数的时候 必须用花括号包裹 而不能为字符串类型例如:<button onClick={function(){console.log("aaa")}}>click me</button>但行内式不太方便 可以将函数进行抽离像这样:import React from原创 2020-06-09 14:08:45 · 2235 阅读 · 0 评论 -
React学习之旅Part6:React中JSX的CSS样式(行内样式、封装样式、抽取样式表模块)、模块化解决css作用域问题、loader处理字体文件和scss和less
在React中 JSX的虚拟DOM组件同样可以设置样式 且设置方式与普通的写法大同小异CSS样式有两种写法 分别为行内样式 和 封装样式行内样式:在JSX中 行内样式不能为style设置字符串格式的值 而是对象键值对类型的值若出现连字符 则从第二个单词开始开头要大写 否则必须为字符串格式在行内样式中 若是纯数值类型的样式 则可以不用引号进行包裹 但若为字符串类型的样式 则必须用引号包裹例如:export default class Hello extends React.Component{原创 2020-06-09 10:16:40 · 3709 阅读 · 0 评论 -
React学习之旅Part5:React组件的class创建方式及传值和传递方法、state私有数据、有状态组件和无状态组件
Class创建组件React创建组件有两种方式 一种是function创建方式具体可以看我这篇博客:React学习之旅Part4:React组件的function创建方式及传值、抽离为单独jsx文件还有一种更常用且推荐的 就是class创建方式了class方式创建组件 有三个需要注意的地方:1、若要使用class关键字来定义组件 则必须让组件继承React.Component类2、在组件里必须用render函数渲染 否则会报错3、必须返回合法的JSX虚拟DOM结构 若没有要返回的内容 则re原创 2020-06-08 15:35:13 · 2957 阅读 · 0 评论 -
JavaScript ES6的class关键字、实例属性和静态属性、实例方法和静态方法、extends继承
创建方式二:class关键字class关键字是ES6的新特性例如 创建一个动物类:class Animal{}(有Java的感觉了…)构造器用constructor创建构造器 用法和Java的构造函数相同每个类中都有一个构造器 若没有手动指定 那么默认每个类中有个看不见的空构造器构造器的作用是每当new这个类的时候首先执行构造器中的代码 常用于初始化赋值class Animal{ // 类中的构造器 constructor (name,age) {原创 2020-06-08 14:17:28 · 3591 阅读 · 1 评论 -
React学习之旅Part4:React组件的function创建方式及传值、抽离为单独jsx文件
一、创建方式:构造函数首先导包import React from 'react'import ReactDOM from 'react-dom'可以用构造函数来创建组件一个构造函数就是一个组件组件的首字母必须大写 否则浏览器将当作普通标签 解析失败 从而报错在组件中必须返回一个合法的JSX虚拟DOM元素 否则会报错function Hello(props)// 在构造函数中接收外界传来的数据{ // 若在一个组件中return null 则代表该组件为空 什么都不渲染 /原创 2020-06-08 07:55:16 · 2255 阅读 · 0 评论 -
React学习之旅Part3:React中JSX语法的使用(渲染数字、渲染字符串、渲染布尔值、为属性绑定值、渲染JSX元素、渲染JSX元素数组、将普通字符串数组转换为JSX数组并渲染)及注意事项
JSX语法可以:渲染数字渲染字符串渲染布尔值为属性绑定值渲染JSX元素渲染JSX元素数组将普通字符串数组转换为JSX数组并渲染可直接将标签放入render()方法中:该标签经过Babel的转换后不是一个HTML标签了 而是一个对象import React from 'react'import ReactDOM from 'react-dom'ReactDOM.render(<div>我是帅哥</div>,document.getElementById("原创 2020-06-07 17:14:32 · 2542 阅读 · 0 评论 -
React学习之旅Part2:React的安装、createElement和render基本使用、JSX入门及Babel转换器的安装
一、安装使用React前 当然需要先安装包输入cnpm i react react-dom -S安装两个必须的包react:专门用于创建组件 同时 组件的生命周期都在该包中react-dom:专门进行DOM操作最主要的应用场景就是ReactDOM.render() 实现渲染(注:-S即-save的简写 包会在package中的devDependencies对象中 是在开发环境中要用到的-D即-save-dev的简写 包会在package中的dependencies对象中 是在生产环境中要用原创 2020-06-07 16:05:55 · 2899 阅读 · 0 评论 -
React学习之旅Part1:虚拟DOM和Diff算法
一、概念React 是一个用于构建用户界面的JavaScript库React可以构建高效 快速的用户界面 它是一个轻量级库 因此很受欢迎它遵循组件设计模式 声明式编程范式和函数式编程概念 以使前端应用程序更高效它使用虚拟DOM来有效地操作DOM 并且它遵循从高阶组件到低阶组件的单向数据流React有两个重要知识点:虚拟DOM和Diff算法它们可以说是React的核心内容二、核心虚拟DOM(Virtual Document Object Model)DOM是浏览器中的概念 即 用JS对象来原创 2020-06-06 19:53:07 · 2765 阅读 · 0 评论 -
【新手向】Nginx+pm2部署和发布Nuxt项目 实现服务端渲染
Nuxt项目完成了 剩下的就是部署到服务器上了但是网上的教程多半含混不清 顺序混乱 对新手不太友好 索性自己写一个比较全的教程吧介绍Nuxt项目打包后发布在服务器上是前台运行的 启动后 若将窗口关掉则无法访问使用pm2可以完美解决该问题pm2是一个带有负载均衡功能的Node应用的进程守护工具 允许独立代码利用全部服务器上的所有CPU 并且能够保证进程永远活着(alive)pm2有着0秒的重载 还能提供监控等功能 是个很实用的工具环境准备一、首先当然是安装Node了安装pm2需要npm 包括原创 2020-05-26 16:27:31 · 7619 阅读 · 1 评论 -
使用Nuxt重构已有Vue项目(Axios默认根域名、切换Vuetify字体、配置Mavon编辑器和常见异常解决localStorage/window/document is not defined)
近日用Vue写了个小项目 但由于Vue的特性 导致项目的SEO并不是很好因此用Nuxt重构了该项目 对项目进行了一次优化由于之前并没有相关的经验 因此遇到不少的坑 特此记录一下一、概念什么是NuxtNuxt.js是Vue.js的通用框架 常用来作服务器端渲染(Server Side Rendering 简称SSR)Vue适合用于开发SPA单页面应用 但因其数据绑定特性 导致爬虫只能爬取页面模板 并不能爬到渲染好的数据 不利于网站排名对于公司内部网站等不需要排名的网站 可以不用SEO但对于那些原创 2020-05-23 21:07:57 · 6940 阅读 · 1 评论 -
在用Vue-cli构建的项目里安装并使用Axios发送Ajax请求
最近在项目里需要发送Ajax请求调接口 由于Vue2.0版本后不再更新vue-resource了 遂选择了Axios一、安装Axios和vue-axios由于Axios是一个库 而不是插件 因此若要在组件里使用 则需要在每个组件里use() 比较麻烦vue-axios是一个包装器 用于将Axios集成到Vue上 这样即可通过全局方法Vue.use()使用Axios插件了npm install --save axios vue-axios二、配置1、引入Axios:import Vue fro原创 2020-05-13 18:42:06 · 2694 阅读 · 0 评论 -
三种方法实现Vue路由跳转时自动定位在页面顶部
在做Vue项目的时候发现 当路由跳转时 页面是不会自动跳转到顶部的 而是停留在当前已滚动的距离实现方法其实很简单 共有三种方法可实现页面自动跳转到顶部在路由的main.js(router.js)里添加如下代码即可:方法一:// 跳转后自动返回页面顶部router.afterEach(() => { window.scrollTo(0,0);})方法二:const router = new VueRouter({ routes:[...], scrollBehavior原创 2020-05-12 16:32:42 · 2448 阅读 · 1 评论 -
Nuxt页面自定义meta标签和asyncData异步请求
一、页面自定义meta标签可以为每个页面单独设置不同的meta标签 以便于SEO全局的meta标签在nuxt.config.js文件里配置而单独的meta标签在组件的内部<script>标签内进行配置即可值得注意的是:hid属性是页面的唯一标识 若想要在此配置并覆盖全局的meta 那么hid属性必须为description因为默认的meta的hid属性就是descriptio...原创 2020-05-08 11:36:55 · 3401 阅读 · 0 评论 -
Nuxt默认模板、默认布局和自定义错误页面
一、默认模板和默认布局通常用于一些有固定格式的网站 比如一些网站的头部和底部都是一样的 此时即可使用默认模板默认模板在项目的根目录下创建一个名为app.html的文件 Nuxt即可自动将其识别为默认模板:用法和字符串拼接有点类似 可将{{HEAD}}视为头部内容 将{{APP}}视为页面主体内容(HEAD和APP都需大写)<!DOCTYPE html><html l...原创 2020-05-08 11:37:36 · 3138 阅读 · 0 评论 -
Nuxt的路由(普通路由、动态路由、参数校验)和路由动画
一、路由在Vue中 需要手动配置router路由规则 而Nuxt省去了手动挨个配置的麻烦Nuxt会自动检测并配置路由 因此 只需要直接在浏览器访问即可但Nuxt自动生成的路由规则有着一定的规律普通路由若组件是在文件夹里 则前面需要带上文件夹的名称若URL不带组件名 则默认路由到的是文件夹中的index.vue例如 目录结构如下:pages--| user-----| index...原创 2020-05-07 23:26:09 · 4183 阅读 · 0 评论 -
Nuxt的目录结构和常用配置
Nuxt项目的基本目录:其中:□.nuxt:在npm run dev启动项目的时候自动生成的临时文件 类似于vue的dist通常无需多关注□assets:静态资源目录通常用于放置LESS SASS JavaScript文件□components:存放自己写的Vue的组件□layouts:存放布局文件□middleware:存放中间件□node_modules:存放n...原创 2020-05-07 18:09:14 · 4921 阅读 · 0 评论 -
Nuxt的介绍及简单安装(vue-cli4.x)
一、简介Nuxt.js是一个基于Vue.js的轻量级应用框架 可以在服务器端将vue渲染成html返回服务器Nuxt可用来创建服务端渲染 (SSR) 应用 也可充当静态站点引擎生成静态站点应用 具有优雅的代码结构分层和热加载等特性通过对客户端/服务器端基础架构的抽象组织 Nuxt.js主要关注应用的UI渲染SSR(服务端渲染)相比SPA(单页面应用)的优点:对SEO的支持SPA(单页...原创 2020-05-07 17:22:26 · 4538 阅读 · 0 评论 -
Vuetify2.x学习笔记(肆):扩展面板(expansion panel)、菜单(menu)、对话框(dialog/popup)、表单(form)、日期选择器(date picker)【完结】
▲扩展面板该组件是一个信息栏 当点击展开后 能显示更多信息使用<v-expansion-panels>标签创建一个扩展面板组 里面可以有很多独立的扩展面板项添加accordion手风琴效果 移除扩展面板打开后的边距(默认离其它扩展面板之间是有一些距离的)添加popout使面板以弹出的形式打开(默认是下拉方式打开)添加inset使面板以嵌入的形式打开(默认是下拉方式打开)...原创 2020-05-07 15:15:50 · 5512 阅读 · 0 评论 -
Vuetify2.x学习笔记(叁):栅格系统(grid)、标签(chips)、提示语(tooltip)、卡片(cards)、头像(avatar)
▲栅格系统Vuetify附带了一个使用flex-box构建的12点栅格系统相当于将页面宽度平均分成了12等分 可以独立设置每个元素在页面的的宽度在栅格系统的最外层是<v-container>标签 该标签能使里面的内容居中水平填充在页面上展示在<v-container>标签上添加fluid 可使其有更小的左右边距用<v-row>标签包裹每一行的内容...原创 2020-05-06 19:00:17 · 6632 阅读 · 0 评论 -
Vuetify2.x学习笔记(贰):导航栏(tabbar)和导航抽屉(navigation drawer)、主题颜色(theme)、列表(list)、间距(padding&margin)
▲导航栏使用<v-app-bar>创建一个导航栏添加app 使之能固定在页面上方(fixed)添加flat 移除阴影用color属性设置颜色添加dense 使导航栏更窄添加hide-on-scroll 页面往下滚动时导航栏隐藏添加invert-scroll 页面往上滚动时导航栏隐藏用src属性设置背景图片地址使用<v-toolbar-title>创建导...原创 2020-05-06 12:07:25 · 9468 阅读 · 1 评论 -
Vuetify2.x学习笔记(壹):Vuetify的安装、颜色(color)及字体样式、按钮(button)和图标(icon)、不同尺寸设备的适配(xs sm md lg xl)
一、介绍Vuetify是什么Vuetify是Vue.js的头号组件库其通过一致的更新周期 对以前版本的长期支持 响应式社区参与 丰富的资源生态系统和对高质量组件的贡献来为用户提供构建丰富且引人入胜的web应用程序所需的一切二、安装Choose - 1:若用vue-cli 则输入vue add vuetify安装Choose - 2:若用webpack 则输入npm install vu...原创 2020-05-05 19:05:46 · 10889 阅读 · 0 评论 -
vue-cli4.3 Vue脚手架的安装和使用
注:使用前需先安装Nodejs首先 安装vue-cli:npm install -g @vue/cli创建一个新项目:vue create 项目名1、选择默认(default)还是手动(Manually):回车进行确认2、选中要安装的组件:上下箭头移动 空格选择/取消 回车确认3、选择项目所需的功能:4、选择语法检查方式:Lint on save表示保存就检测Li...原创 2020-05-05 12:00:35 · 4123 阅读 · 0 评论 -
Vue学习之旅Part19:Vue的数据仓库 - Vuex的介绍及使用【完结】
一、概念1、Vuex是什么Vuex 是一个专为Vue.js应用程序开发的状态管理模式它采用集中式存储管理应用的所有组件的状态 并以相应的规则保证状态以一种可预测的方式发生变化(官网摘的 可能有些难懂)上面的状态管理模式中的状态 可以理解为是数据即 可以将一些共享的数据保存到Vuex中 以方便程序中的任何组件直接获取或修改公共数据也就是说 Vuex相当于是一个全局的共享的数据存储空间 ...原创 2020-05-03 21:18:15 · 4362 阅读 · 1 评论 -
ES6的Promise对象的的介绍及用法(解决回调地狱问题)
一、概述ES6的Promise对象可解决前端开发中常见的回调地狱问题(即大量异步回调函数的嵌套) 为异步编程提供了一种很好的解决方案首先 什么是异步问题例:一个异步的读取文件的方法const fs=require("fs")const path=require("path")function getFileByPath(filePath){ fs.readFile(fil...原创 2020-04-30 18:59:23 · 5459 阅读 · 0 评论 -
在Vue中使用babel-plugin-component插件以实现按需导入Mint UI的组件
在使用Mint UI开发时 若导入全部Mint UI 则文件会比较大为优化 可按需导入Mint Ui的组件 只导入所需要的组件可通过babel-plugin-component插件以实现按需导入首先 安装babel-plugin-component:npm install babel-plugin-component -D然后 在Babel的配置文件.babelrc里添加一个组件:(...原创 2020-04-29 14:02:35 · 10018 阅读 · 0 评论 -
Vue学习之旅Part18:Vue组件库Mint UI的介绍及使用(结合Webpack)
一、简介Mint UI是一个基于Vue.js的移动端组件库若对组件的概念不太了解 请参看本人的另一篇博客:Vue学习之旅Part8:Vue全局组件和私有组件的创建及组件切换动画Mint UI和Bootstrap不一样 Bootstrap并不是一个真正的组件库 而是类似于代码片段而Mint-UI是真正的组件库 是使用 Vue 技术封装的成套组件 可无缝和VUE项目进行集成开发 且只适用于Vu...原创 2020-04-29 13:50:45 · 3702 阅读 · 0 评论 -
Vue学习之旅Part17:Vue集合Webpack组件中的样式标签的lang和scoped属性
默认在<style>标签里设置的样式是全局的样式:<template> <div> <h3>Account - Login</h3> </div></template><script>export default { }</script>...原创 2020-04-27 22:37:35 · 4306 阅读 · 0 评论 -
Vue学习之旅Part16:Vue结合webpack使用vue-router实现路由和子路由
一、使用vue-router实现路由由于是通过vue-router实现的路由 因此 须先安装vue-router:输入cnpm i vue-router -S以安装vue-router包然后 在main.js里导包:导入VueRouter的包之前 必须先导入Vue的包:import Vue from "vue"import VueRouter from "vue-router"然后...原创 2020-04-27 21:47:29 · 4316 阅读 · 0 评论 -
Vue学习之旅Part15:在Webpack整合Vue的环境下暴露组件的成员(export default和export)
Vue的组件文件由三部分组成:<template>:HTML代码<script>:业务逻辑<style>:样式在<script>标签内部暴露组件的属性及方法:<template> <div> <h1>登录组件{{msg}}</h1> </div>&...原创 2020-04-27 16:11:19 · 5440 阅读 · 1 评论 -
Vue学习之旅Part14:使用render在Webpack中渲染Vue组件
步骤1:在src下创建一个名为后缀名为vue的文件该文件在Webpack中是纯粹的Vue组件由三部分组成:<template>:HTML代码<script>:业务逻辑<style>:样式例:login.vue<template> <div> <h1>登录</h1> ...原创 2020-04-27 15:06:55 · 5280 阅读 · 0 评论 -
Vue学习之旅Part13:在Webpack中导入Vue —— 三种方法完美解决You are using the runtime-only build of Vue
若要在webpack环境下使用vue首先 需在项目中安装Vue:在项目根目录下输入:cnpm i vue -S安装vuemain.js:import Vue from "vue"var vm=new Vue({ el:"#app", data:{ msg:"test" }})index.html:<div id="app">...原创 2020-04-27 10:11:13 · 5573 阅读 · 0 评论 -
在Webpack4.x环境下使用Babel转换ES6语法
一、介绍在Webpack中 默认只能转换一部分ES6的新语法部分更高级的ES6语法或ES7语法 Webpack无法转换比如:ES6中类的静态属性class Person{ static info={name:"Mike",age:18}}console.log(Person.info)此时 Webpack默认打包的时候会报错需要借助第三方loader来处理这些高级的语法...原创 2020-04-25 23:10:38 · 6002 阅读 · 0 评论