zoukankan      html  css  js  c++  java
  • 前端高效开发框架技术(疫情会不会大暴发 听听钟南山怎么说)

    (给达达前端加星标,提升前端技能

    不用怕

    https://v.qq.com/x/cover/mzc002004ceupu5/y3058p0xcr6.html

    内容有点多,也请你静下来,慢阅读,今后多多关照。

     Vue框架基础知识

    mvx模式介绍,x这里代表是未知数的意思,那么有多少mvx模式要我们了解的呢?mvc模式,mvvm模式,相互之间的区别。

    让我们说一说mvc模式,这模式很常见,mvc模式,mvc模式是移动最广泛的软件架构之一,把应用程序分为三部分,分别为模型,Model,视图view,以及控制器controller。

    现在的我们常说的是Mvvm模式,这也是面试官会问,什么是Mvvm模式的呢,mvvm模式是把mvc模式的controller改成viewmodel。

    view的变化会自动更新viewmodel,viewmodel的变化也会自动同步到view上显示。

    web前端开发阶段,原生代码开发阶段,使用HTML,css,JavaScript代码进行前端开发,学习web原生的优点,就是学习成本低,容易上手,不好的就是代码结构混乱,代码冗余,浏览器兼容性不成熟,不利于分工合作。

    代码库开发的阶段,就是使用成熟的开源扩展库进行前端的开发,优点就是开发快速,浏览器兼容性良好,缺点就是视图层和数据层混合在一起,不利于团队分工合作。

    框架开发阶段,采用前端mvc模式或者是Mvvm模式开发,优点就是代码分层,便于团队合作,便于后续代码维护,缺点就是学习成本高,框架更新迭代快。

    vue框架的学习,vue是一套构建用户界面的渐进式框架,vue只关注图层,采用自底向上增量开发的设计。

    模板

    主要内容

    Vue基础知识

    Vue框架基础语法、Vue开发工具

    Vue组件

    Vue组件、Vue模块化开发

    Vue工程化开发

    npm/yarnwebpack开发工具、Vue-cli开发工具、单文件工具

    Node.js基础和Axios网络请求

    Node.js构建Web服务器、Axios发送ajax请求、postman网络调试工具

    Vue-Router路由

    单页面应用SPAVue-Router实现路由机制

    Vuex状态管理

    Vuex状态管理、本地存储

    Vue-UI

    Vue中的UI

    三大框架的对比


    Angular

    React

    Vue

    发布时间

    2009

    2013

    2014

    维护者

    谷歌

    Facebook

    尤雨溪

    视图引擎

    HTML

    JSX

    HTML

    学习曲线

    陡峭

    较复杂

    简单

    大小

    500K+

    130K+

    50K+

    功能复杂度

    完善

    完善

    简单

    文档

    英文

    英文

    中文

    应用场景

    大型复杂应用

    中大型应用、移动跨平台开发

    中小型轻量级应用

    如何使用我们的vue.js框架

    安装,在vue.js的官网上下载vue.min.js并用script标签引入,cdn方式引入vue.js文件,vue推荐使用地址。

    第一个vue项目实例

    实例对象

    vue实例对象就是vue框架的一个核心。

    配置项el,把vue实例挂载到dom元素上,然后通过id绑定到html元素;配置项data,就是数据对象,vue实例的数据,注意了,数据不要与methods中的方法重名;配置项methods,事件对象,包含事件所有触发的函数,注意了,方法名不要与data中的数据重名了;配置项computed,计算属性;配置项watch,表示监听器;配置项directives,表示自定义指令。

    配置项钩子(hook)函数,hook(钩子)函数,不同生命周期引发的动作,路由钩子函数,路由组件在不同状态时触发。

    components表示组件容器;配置项template,定义模板,可以是字符串,也可以是“#”选择器,props配置项,用于接收父组件的数据;router配置项,路由,store配置项,vuex状态。

    属性

    说明

    vm.$el

    Vue 实例使用的根 DOM 元素

    vm.$data

    Vuedata配置项

    vm.$options

    用于当前 Vue 实例的初始化选项

    vm.$props

    当前组件接收到的 props 对象

    vm.$parent

    父实例(如果当前实例有的话)

    vm.$root

    当前组件树的根 Vue 实例

    vm.$children

    当前实例的直接子组件

    vm.$refs

    原生DOM元素或子组件注册引用信息

    vm.$slots

    用来访问被插槽分发的内容

    vm.$router

    全局路由(vue-router插件)

    vm.$store

    vuex 状态对象(vuex插件)

    方法

    说明

    vm.$emit()

    子组件可以使用 $emit 触发父组件的自定义事件

    vm.$set()

    Vue.set的别名<br /> 设置对象的属性, 这个方法主要用于避开 Vue 不能检测属性被添加的限制

    vm.$watch

    侦听数据变化

    vm.$on()

    监听当前实例上的自定义事件。事件可以由vm.$emit触发。回调函数会接收所有传入事件触发函数的额外参数。

    vm.$mount

    可以使用 vm.$mount() 手动挂载(Vue 实例化时没有 el 选项)

    vm.$destroy

    完全销毁一个实例。清理它与其它实例的连接,解绑它的全部指令及事件监听器。<br /> 触发 beforeDestroy 和 destroyed 的钩子。

    属性绑定指令

    说明

    v-bind

    动态改变dom标签上的属性<br />v-bind :class="" 简写 :class=""

    生命周期,vue实例从开始创建,初始化数据,编译模板,挂载dom,渲染到更新到渲染,到卸载等一系列过程。

    总结一下,四个阶段,创建,挂载,更新,销毁。

    使用New Vue()来创建vue实例;接下是beforeCreate调用beforeCreate生命周期钩子,observe data开始监控data对象数据变化,init events,vue初始化内部事件,created调用created生命周期钩子,has"el"option?实例中是否含有"el"选项,有调用vm.$mount手动挂载一个未挂载的实例时,has "template" option?是否含有template选项。

    模板语法

    计算属性

    计算属性,顾名思义就是通过其他变量计算得来的另一个属性。

    计算属性具有缓存,多次访问计算属性会立即返回之前的计算结果,而不是再次计算后的结果。

    computed中的函数,不能传参。

    methods方法

    vue对象中可以使用methods属性,用来编写自定义函数,使用方法是methods属性由一系列json方法对组成。

    渲染

    循环数组:

    循环对象

    数组的更新检查

    push(),pop(),shift(),unshift(),splice(),sort(),reverse()为变异方法可触发视图更新。

    filter(),concat(),slice()为非变异方法,不触发视图更新,他们可以返回新数组,用新数组替换旧数组,就可以刷新视图。

    条件渲染

    指令

    说明

    v-if

    根据其后表达式的bool值进行判断是否渲染该元素

    v-else-if

    v-if 的“else-if ,可以连续使用

    v-else

    表示 v-if 的“else ”<br />v-else 元素必须紧跟在带 v-if 或者 v-else-if 的元素的后面,否则它将不会被识别。

    事件与表单

    事件处理,需要绑定事件处理函数,在Vue中绑定事件处理,直接在HTML元素上使用v-on指令绑定即可。

    指令

    说明

    v-on:click

    简写: @click=""clickmouseovermouseoutmouseupmousedowndblclick contextmenukeydownkeyup

    事件对象,事件处理过程中会触发event事件对象,这个event对象代表当前事件的状态,比如事件触发时的HTML元素是什么,event.target来得到触发事件的HTML元素,可以得到事件的类型。

    event.type得到当前的事件类型。

    属性和方法

    描述

    event.type

    触发的事件类型

    event.target

    触发事件的HTML元素

    event.preventDefault( )

    阻止事件的默认行为

    event.stopPropagation( )

    阻止事件冒泡

    借助事件对象实现一个事件委托机制,从而提高我们应用程序的一个性能,什么是事件委托机制?事件委托机制在列表渲染过程中,大部分都是v-for渲染过程中,借助event事件对象,在父元素之上绑定事件处理函数而不是在子元素之上绑定事件处理函数。

    表单处理

    指令

    说明

    v-model

    双向数据绑定支持标签:<input> <textarea> <select>

    表单事件

    触发控件

    说明

    focus

    input框、textarea

    输入框获取到输入焦点

    blur

    input框、textarea

    输入框失去焦点

    click

    单选框、多选框

    选中某一个单选项或复选框

    change

    下拉列表

    切换下拉列表项

    submit

    提交按钮

    单击提交按钮

    vue组件,组件是vue.js的功能之一,目的是为了可重用性高,减少重复性的开发,在结构上相近或相同的代码进行封装,成为一个高度可复用的部件称为组件。

    选项

    说明

    模板(template

    模板声明了数据和最终展现给用户的DOM之间的映射关系。

    初始数据(data

    一个组件的初始数据状态。对于可以复用的组件来说,通常是私有的状态。

    接受的外部参数(props

    组件之间通过参数来进行数据的传递和共享。参数默认是单向绑定(由下往上),但也可以显示声明为双向绑定。

    方法(methods

    对数据的改动操作一般都在组件的方法内进行。可以通过v-on指令将用户输入事件和组件方法进行绑定。

    生命周期钩子函数(lifecycle hooks

    一个组件会触发多个生命周期钩子函数,比如createdattacheddestroyed等。在这些钩子函数中,我们可以封装一些自定义的逻辑。和传统的MVC相比,这可以理解为Controller的逻辑被分散到了这些钩子函数中。

    vue组件的使用,先注册后使用,vue组件可以在全局注册,也可以在局部注册。

    创建组件

    注册组件,使用组件,注意事项

    注意事项

    模板:使用id绑定

    命名:组件名不要是html标准标签名,如果用驼峰定义,html中引用组件时,改为短横线命名

    data属性表名vue组件可用的响应式数据,是vue实例的数据对象;vue将会递归data的属性转变为getter/setter,让data的属性能够响应数据变化,对象必须是纯粹的对象,浏览器api创建的原生对象,原型上的属性会被忽略。

    data访问原始数据对象,Vue实例代理了data对象上所有的属性。

    props传递数据,父组件和子组件之间的数据通信。

    事件通信

    父组件和子组件之间的数据操作,是通过Props属性和$emit()方法来实现的

    props,声明位置在子组件中声明,属性值,在组件模板中绑定。

    $emit,子组件向父组件传值,使用$emit触发父组件方法。

    注意,props属性名如果用驼峰定义,html标签中改为短横线命名,$emit自定义事件不能使用驼峰,短横线命名。

    如果prop是一个对象或数组,子组件内部改变它会影响父组件的状态。

    非父子通信

    本质上通过派发事件-》监听事件从而更改值。

    Vue全家桶之组件化开发

    Vue插槽详解 | 什么是插槽?

    来吧!一文彻底搞定Vue组件!

    组件类型

    动态组件,主要是在使用过程中,可能需要动态的切换组件的显示内容。

    多个组件主要是使用同一个挂载点。

    递归组件,在组件内部可以嵌套调用其他组件,甚至可以递归地调用当前自身组件。

    vue工程化工具

    node.js是一个让JavaScript运行在服务端的开发平台,它让JavaScript成为和PHP,python,perl,ruby等服务器端语言平起平坐的脚本语言。node.js是一个基于chrome JavaScript运行时建立的平台,用于方便地搭建响应速度快,易于扩展的网络应用,node.js使用hijack驱动,非阻塞i/o模型而得以轻量和高效,非常适合在分布式设备上运行数据密集型的实时应用。

    node.js使用module模块去划分不同的功能,以简化应用的开发。

    引入了Http类库,并且对http类库的引用存放在http变量中。

    Node.js环境安装

    https://nodejs.org/en/download/

    升级npm版本

    属性

    说明

    name

    包名

    version

    包的版本号。

    description

    包的描述。

    homepage

    包的官网 url

    author

    包的作者姓名。

    contributors

    包的其他贡献者姓名。

    dependencies

    依赖包列表。如果依赖包没有安装,npm 会自动将依赖包安装在 node_module 目录下。

    repository

    包代码存放的地方的类型,可以是 git svngit 可在 Github 上。

    main

    字段指定了程序的主入口文件,require('moduleName') 就会加载这个文件。这个字段的默认值是模块根目录下面的 index.js

    kewords

    关键字

    命令

    说明

    npm help

    可查看某条命令的详细帮助,例如npm help install

    npm install <package>e -g

    在本地安装当前命令行程序,可用于发布前的本地测试。

    npm update <package> -g

    使用可以把全局安装的对应命令行程序更新至最新版。

    npm update <package>

    可以把当前node_modules子目录里对应模块更新至最新版本

    npm cache clear

    可以清空NPM本地缓存用于对付使用相同版本号发布新版本代码的人

    npm unpublish <package>@<version>

    可以撤销发布自己发布过的某个版本代码。

    yarn使用

    Yarn 是 Facebook, Google, Exponent 和 Tilde 开发的一款新的 JavaScript 包管理工具。

    它的出现是为了解决使用npm面临的问题:

    yarm命令

    指令

    说明

    yarn init

    初始化项目,生成package.json文件

    yarn add 包名

    添加依赖包,示例:yarn add [package]yarn add [package]@[version]yarn add [package]@[tag]

    yarn

    根据 package.json 安装全部依赖包,也可以使用 yarn install

    yarn upgrade

    升级依赖包

    yarn remove

    移除依赖包

    Npm

    Yarn

    说明

    npm init

    yarn init

    初始化某个项目

    npm install/link

    yarn install/link

    默认的安装依赖操作

    npm install taco -save

    yarn add taco

    安装某个依赖,并默认保存到package

    npm uninstall taco -save

    yarn remove taco

    移除某个依赖项目

    npm install taco –save-dev

    yarn add taco –dev

    安装某个开发时依赖项目

    npm updata taco -save

    yarn upgrade taco

    更新某个依赖项目

    npm install taco --global

    yarn global add taco

    安装某个全局依赖项目

    npm publish/login/logout

    yarn publish/login/logout

    发布、登录、登出,一系列NPM Registry操作

    npm run test

    yarn run test

    运行某个命令,可以在script脚本中去配置

    vue cli是一个基于vue.jsf进行快速开发的完整系统。

    文件

    说明

    build

    项目构建(webpack)相关代码

    config

    配置目录,包括端口号等。我们初学可以使用默认的。

    node_modules

    npm 加载的项目依赖模块

    src

    这里是我们要开发的目录,基本上要做的事情都在这个目录里。里面包含了几个目录及文件: ² assets: 放置一些图片,如logo² components: 目录里面放了一个组件文件,可以不用 ² App.vue: 项目入口文件,我们也可以直接将组件写这里,而不使用 components 目录 ² main.js: 项目的核心文件

    test

    初始测试目录,可删除

    static

    静态资源目录,如图片、字体等。

    index.html

    首页入口文件,你可以添加一些 meta 信息或统计代码啥的

    package.json

    项目配置文件。

    README.md

    项目的说明文档,markdown 格式

    vue项目配置

    配置项

    数据类型

    说明

    默认值

    publicPath

    string

    基本路径

    '/'

    outputDir

    string

    输出文件目录

    'dist'

    assetsDir

    string

    静态资源存放目录

    ' '

    indexPath

    string

    输出路径

    'index.html'

    filenameHashing

    Boolean

    生成的静态资源在它们的文件名中包含了hash 以便更好的控制缓存

    true

    pages

    Object

    multi-page 模式下构建应用。每个“page”应该有一个对应的 JavaScript 入口文件。

    undefined

    lintOnSave

    Boolean

    是否在开发环境下通过 eslint-loader 在每次保存时 lint 代码。

    true

    runtimeCompiler

    Boolean

    是否使用包含运行时编译器的 Vue 构建版本

    false

    transpileDependencies

    Boolean

    是否生成source map文件,可以将其设置为 false 以加速生产环境构建。

    true

    crossorigin

    String

    设置生成的 HTML <link rel="stylesheet"><script> 标签的 crossorigin 属性(跨域)。

    undefined

    integrity

    Boolean

    在生成的 HTML 中的 <link rel="stylesheet"> <script> 标签上启用 Subresource Integrity(SRI:摘要签名机制,来保证外链资源的完整性)

    flase

    configureWebpack

    Object/function

    Object:通过 webpack-merge合并到最终的配置中<br />function:接收被解析的配置作为参数


    chainWebpack

    Function

    用来表示是一个函数,会接收一个基于<br/>webpack-chain ChainableConfig 实例。允许对内部的 webpack 配置进行更细粒度的修改。


    css.modules

    Boolean

    默认情况下,只有 .module.[ext] 结尾的文件才会被视作 CSS Modules 模块。设置为true后你就可以去掉文件名中的.module并将所有.(css|scss|less|styel(us)?)文件视为CSS Modules文件。

    false

    css.extract

    Boolean/Object

    用来设置是否将组件中的 CSS 提取至一个独立的 CSS 文件中 (而不是动态注入到 JavaScript 中的 inline 代码)

    生产环境:true<br />开发环境:fals

    css.sourceMap

    Boolean

    是否为 CSS 开启 source map

    false

    css.loaderOptios

    Object

    用来向 CSS 相关的 loader 传递选项

    {}

    devServer

    Object

    所有 webpack-dev-server 的选项都支持


    devServer.proxy

    String/Object

    前端应用和后端 API 服务器没有运行在同一个主机上,需要在开发环境下将 API 请求代理到 API 服务器。

    proxy: ''

    parallel

    Boolean

    是否为BabelTypeScript 使用 thread-loader。该选项在系统的 CPU 有多于一个内核时自动启用,仅用于生产构建。

    require('os').cpus().length > 1

    pluginOptions

    Object

    用来传递任何第三方插件选项。


    js模块

    express服务器开发

    Node.js是运行在服务器端的JavaScript。

    第一个node应用程序

    express

    body-parser,node.js中间件,用于处理json,raw,text和url编码的数据。cookie-parser是一个解析cookie的工具,通过req.cookies可以取到传过来的cookie,并把它们转成对象。multer,node.js中间件,用于处理表单数据。

    属性

    说明

    req.app

    callback为外部文件时,用req.app访问Express的实例

    req.baseUrl

    获取路由当前安装的URL路径

    req.body / req.cookies

    获得「请求主体」/ Cookies

    req.fresh / req.stale

    判断请求是否还「新鲜」

    req.hostname / req.ip

    获取主机名和IP地址

    req.originalUrl

    获取原始请求URL

    req.params

    获取路由的parameters

    req.path

    获取请求路径

    req.protocol

    获取协议类型

    req.query

    获取URL的查询参数串

    req.route

    获取当前匹配的路由

    req.subdomains

    获取子域名

    req.accepts()

    检查可接受的请求的文档类型

    req.acceptsCharsets / req.acceptsEncodings / req.acceptsLanguages

    返回指定字符集的第一个可接受字符编码

    req.get()

    获取指定的HTTP请求头

    req.is()

    判断请求头Content-TypeMIME类型

    属性

    说明

    res.app

    req.app一样

    res.append()

    追加指定HTTP

    res.set()

    res.append()后将重置之前设置的头

    res.cookie(namevalue [option])

    设置Cookie

    opition

    domain / expires / httpOnly / maxAge / path / secure / signed

    res.clearCookie()

    清除Cookie

    res.download()

    传送指定路径的文件

    res.get()

    返回指定的HTTP

    res.json()

    传送JSON响应

    res.jsonp()

    传送JSONP响应

    res.location()

    只设置响应的Location HTTP头,不设置状态码 或者close response

    res.redirect()

    设置响应的Location HTTP头,并且设置状态码302

    res.render(view,[locals],callback)

    渲染一个view,同时向callback传递渲染后的字符串,如果在渲染过程中有错误发生next(err)将会被自动调用。callback将会被传入一个可能发生的错误以及渲染后的页面,这样就不会自动输出了。

    res.send()

    传送HTTP响应

    res.sendFile(path [options] [fn])

    传送指定路径的文件 -会自动根据文件extension设定Content-Type

    res.status()

    设置HTTP状态码

    res.type()

    设置Content-TypeMIME类型

    express路由

    请求方法

    说明

    GET

    请求一个指定资源的表示形式. 使用GET的请求应该只被用于获取数据.

    HEAD

    请求一个与GET请求的响应相同的响应,但没有响应体.

    POST

    用于将实体提交到指定的资源,通常导致状态或服务器上的副作用的更改.

    PUT

    用请求有效载荷替换目标资源的所有当前表示。

    DELETE

    删除指定的资源。

    CONNECT

    建立一个到由目标资源标识的服务器的隧道。

    OPTIONS

    用于描述目标资源的通信选项。

    TRACE

    沿着到目标资源的路径执行一个消息环回测试。

    PATCH

    用于对资源应用部分修改。

    pug视图模板

    Cookie

    Session

    Cookie是把用户的数据写给用户的浏览器,在浏览器端保存状态数据,每次访问服务器时,在HTTP请求消息中传输状态数据。缺点是:数据量太大,HTTP消息传输负担较大;用户可能会修改cookie信息,导致服务器不安全。

    Session技术把用户的数据写到用户独占的session中,不同用户通过不同的sessionid 辨别。 <br />1.sessionid 保存在 客户端cookie或本地存储中。 <br /> 2.浏览器发送HTTP请求时,附带 sessionid cookie信息,以便服务器端区分是哪一个用户。 Session技术把用户的数据写到用户独占的session中,不同用户通过不同的sessionid 辨别。

    参数

    作用

    Secret

    一个String类型的字符串,作为服务器端创建session的签名

    Name

    返回客户端key的名称,默认为connect.sid,也可以自己设置

    Resave

    强制保存session,即使它没有变化。默认为true。建议设置成false

    SaveUninitialized

    强制将未初始化的session存储。当新建了一个session且未设定属性或值时,它就处于未初始化状态。在设定一个cookie前,这对于登录验证,减轻服务的存储压力,极限控制是有帮助的(默认为true)。建议手动添加。

    Cookie

    设置返回到前端key的属性,默认值为{path: '/', httpOnly: true, secure: false, maxAge: null}

    Rolling

    在每次请求时强行设置cookie,这将重置cookie过期时间,默认是false

    目录/文件

    说明

    build

    项目构建(webpack)相关代码

    config

    配置目录,包括端口号等。我们初学可以使用默认的。

    node_modules

    npm 加载的项目依赖模块

    src

    这里是我们要开发的目录,基本上要做的事情都在这个目录里。里面包含了几个目录及文件: 1.sets: 放置一些图片,如logo等。 2.mponents: 目录里面放了一个组件文件,可以不用。 3.p.vue: 项目入口文件,我们也可以直接将组件写这里,而不使用 components 目录。 4.in.js: 项目的核心文件。

    static

    静态资源目录,如图片、字体等。

    test

    初始测试目录,可删除

    .xxxx文件

    这些是一些配置文件,包括语法配置,git配置等。

    index.html

    首页入口文件,你可以添加一些 meta 信息或统计代码啥的。

    package.json

    项目配置文件。

    README.md

    项目的说明文档,markdown 格式。

    指令

    说明

    nodemon -h或者 nodemon --help

    使用帮助

    nodemon -e

    默认的 nodemon监视 .js, .mjs, .coffee, litcoffeeJson文件,通过-e命令你可以指定你自己的查找列表

    nodemon --watch path

    nodemon默认只会监视当前的工作路径,如果你想去监视其他路径上的文件,你可以使用如下命令: nodemon --watch app --watch libs app/server.js

    nodemon --ignore

    忽视一些文件被监视

    nodemon --delay

    有时候你会修改许多文件,这时为了避免不必要的重启,你可以通过命令指定多少时间后再进行重启。 nodemon --delay 10 server.js

    rs

    手动重启

    nodemon ./server.js localhost 8080

    指定主机和端口

    nodemon --debug ./server.js 80

    开启debug模式

    UI框架

    开发团队

    github star

    优缺点

    element ui(桌面版ui

    饿了么团队开源的ui

    34K

    组件丰富,但是界面样式不太美观。 http://element-cn.eleme.io/#/zh-CN/component/installation

    iView(桌面版ui

    个人团队开源的ui

    19K

    组件丰富,界面样式美观,但使用 render 函数渲染,使用成本较高。 https://www.iviewui.com/docs/guide/install

    Vux(移动端ui

    基于微信ui推出的移动端ui

    14.9K

    https://doc.vux.li/zh-CN/

    mint-ui(移动端ui

    饿了么团队推出的移动端ui

    13.2K

    http://mint-ui.github.io/docs/#/zh-cn2

    陪伴你的365天

    今后也请你多多关照

    推荐阅读  点击标题可跳转

    【面试Vue全家桶】vue前端交互模式-es7的语法结构?async/await

    【面试需要-Vue全家桶】一文带你看透Vue前端路由

    【面试需要】掌握JavaScript中的this,call,apply的原理

    2019年的每一天日更只为等待她的出现,好好过余生,庆余年 | 掘金年度征文

    进来就是一家人【达达前端技术社群⑥】

    觉得本文对你有帮助?请分享给更多人

    关注「达达前端」加星标,提升前端技能

    在博客平台里,未来的路还很长,也希望自己以后的文章大家能多多支持,多多批评指正,我们一起进步,一起走花路。

    非常感谢读者能看到这里,如果这个文章写得还不错,觉得「达达」我有点东西的话,觉得我能够坚持的学习,觉得此人可以交朋友的话, 求点赞,求关注,求分享,对暖男我来说真的

    非常有用!

    感谢阅读,原创不易,喜欢就点个[在看] or [转发朋友圈],这是我写作最大的动力。

    意见反馈

    若本号内容有做得不到位的地方(比如:涉及版权或其他问题),请及时联系我们进行整改即可,会在第一时间进行处理。

    这是一个有质量,有态度的公众号

    点关注,有好运

  • 相关阅读:
    java集合
    移动web页面给用户发送邮件的方法
    如何用CSS和jQuery实现一个侧滑导航菜单
    基于jq的表单填充
    使用JS代码实现点击按钮下载文件
    变量,作用域和内存问题
    如何实现单行/多行文本溢出的省略(...)
    CSS中浮动和定位对元素宽度/外边距/其他元素所占空间的影响
    【javascript】函数中的this的四种绑定形式
    前端开发利器webStorm
  • 原文地址:https://www.cnblogs.com/dashucoding/p/12633846.html
Copyright © 2011-2022 走看看