通过网络获取远程对象
1 | urlopen 用来打开并读取一个从网络获取的远程对象。因为它是一个非常通用的函数(可以轻松读取 HTML 文件、图像文件或其他任何文件流) |
前端小趴菜
官方介绍:WeUI 是一套同微信原生视觉体验一致的基础样式库,由微信官方设计团队为微信内网页和微信小程序量身设计,令用户的使用感知更加统一。小程序开发中最常用到的一款框架,受广大开发人员的欢迎。
[图片上传失败…(image-5dd2d3-1654073247786)]
Github:https://github.com/Meituan-Dianping/mpvue 官网: http://mpvue.com/
官方介绍:mpvue是一个使用 Vue.js开发小程序的前端框架。框架基于 Vue.js核心,mpvue修改了 Vue.js的 runtime和 compiler实现,使其可以运行在小程序环境中,从而为小程序开发引入了整套Vue.js开发体验。
Github地址: https://github.com/Tencent/wepy 官网地址: https://tencent.github.io/wepy
官方介绍:组件化开发,完美解决组件隔离,组件嵌套,组件通信等问题,支持使用第三方 npm 资源,自动处理 npm 资源之间的依赖关系,完美兼容所有无平台依赖的 npm 资源包.
[图片上传失败…(image-f7e73e-1654073247786)]
地址:https://developers.weixin.qq.com/miniprogram/dev/framework/MINA.html
官方介绍:框架提供了自己的视图层描述语言 WXML 和 WXSS,以及基于 JavaScript 的逻辑层框架,并在视图层与逻辑层间提供了数据传输和事件系统,可以让开发者可以方便的聚焦于数据与逻辑上。
一款轻巧的渐进式微信小程序框架
Tina.js 开源框架地址: https://github.com/tinajs/tina
官方介绍:是一款轻巧的渐进式微信小程序框架,保留 MINA (微信小程序官方框架) 的大部分 API 设计;无论你有无小程序开发经验,都可以轻松过渡上手。
地址: https://github.com/wdfe/weweb
官方介绍:weweb是一个兼容小程序语法的前端框架,你可以用小程序的写法,来写web应用。如果你已经有小程序了,通过它你可以将你的小程序运行在浏览器中。
介绍:iView Weapp 提供了与 iView 一致的 UI 和尽可能相同的接口名称,大幅度降低了学习成本,是一套一套高质量的微信小程序 UI 组件库。
一个颜值高、好用、易扩展的微信小程序 UI 库
https://cnodejs.org/topic/589d625a5c8036f7019e7a4a
官方介绍:ZanUI-WeApp结合了微信的视觉规范,为用户提供更加统一的使用感受。 包含 badge、btn、等共计 17 类组件或元素。
– 一个多端混合开发的好用的框架,熟悉一个适用性超强
框架地址: https://uniapp.dcloud.io/collocation/pages 文档地址: https://uniapp.dcloud.io/README 相适应的ide:Hbuilder 可以直接使用该ide打包相应所需的端代码 官方介绍:开发一次,覆盖多端
所谓”小程序容器”,就是一个小程序的运行环境。 App 只要加载这个运行环境,就具备了运行小程序的能力。说得直白一点,它让你拥有了微信那样的小程序引擎,但是不必自己开发。
以前的方案是将小程序代码打包成适配各种平台的小程序运行环境。小程序容器则是可以适配各种小程序框架的代码,不需要额外打包成其他格式,直接运行
FinClip 提供一套 SDK,不仅支持手机(iPhone、Android),还支持桌面(Windows、Linux、macOS)、手表、车机等各种平台。你的 App 只要加载了这套 SDK,就能直接运行微信小程序(以及小游戏),一行代码也不用修改。
也就是说,它完全支持微信小程序的 WXML 语法,无需二次开发,体验与微信端保持一致。你就可以把你的小程序,在微信运行一份,在自己的 App 也运行一份。
同时,它还支持 小程序一键转换成 App,可以将已有小程序代码导出为 IOS 与 Android 中可用的工程文件,并上架至各应用市场 。由于导出的工程文件自动集成了 FinClip SDK ,所以直接拥有小程序的运行能力,后续可在这个 APP 上继续上架更多小程序,自建自己的小程序生态。
对于小型开发者,这个产品是免费使用,只有企业级应用才需要付费。
这个引擎重点针对小游戏的性能和兼容性,进行了优化,除了微信小游戏,还兼容 Unity、Cocos、Laya、Egret Engine 等主流引擎和 WebView。也就是说,无论哪种引擎制作的小游戏,都能够直接运行在你的 App 中。他是与 FinClip 配套的。
配套开发工具 FinClip Studio。这个工具能将现有的小程序/小游戏代码,一键转换成独立 App,做成可用于 iOS、Android 和鸿蒙的安装包。
1 | yarn init -y |
1 | yarn add webpack-cli -D |
基础配置:(webpack.config.js)
1 | let path = require('path'); |
打包命令:
1 | // 可通过 --config 传入参数设置配置文件名称 默认(webpack.config.js) |
1 | yarn add webpack-dev-server -D |
配置文件添加配置:
1 | devServer: { |
添加脚本
1 | "script": { |
将打包后的js,注入到 html 模板中
1 | yarn add html-webpack-plugin -D |
配置文件:
1 | let htmlWebpackPlugin = require('html-webpack-plugin') |
引入适合的loader,在配置 loader 处理规则
css-loader 处理 @import 这种语法映入的样式
style-loader 把css 插入到 head 标签中
处理 less: less-loader
处理 sass: node-sass sass-loader
处理 stylus: stylus-loader
配置:
1 | module.exports = { |
为啥要用这个?
上述配置 最终都是通过 style-loader 将 样式转化为 style 标签插入到 head 标签中
而这个插件则是将 css 转化为 link 标签 再 插入 head 中、
它用于代替 style-loader。
1 | yarn add mini-css-extract-plugin -D |
1 | let htmlWebpackPlugin = require('html-webpack-plugin') |
1 | yarn add autoprefixer postcss-loader -D |
1 | let htmlWebpackPlugin = require('html-webpack-plugin') |
还需要配置 postcss-loader 使用 autoprefixer 插件
根目录新增 postcss.config.js
1 | module.exports = { |
css 压缩:optimize-css-assets-webpack-plugin
js 压缩:uglifyjs-webpack-plugin
1 | yarn add optimize-css-assets-webpack-plugin uglifyjs-webpack-plugin -D |
1 | let htmlWebpackPlugin = require('html-webpack-plugin') |
babel 三件套
babel-loader 转化源文件
@babel/core 核心模块有转化方法
@babel/preset-env 转化模块,es6->es5
@babel/plugin-proposal-class-properties 兼容es高级class语法
@babel/plugin-proposal-decorators 兼容装饰器语法
1 | yarn add babel-loader @babel/core @babel/preset-env -D |
1 | let htmlWebpackPlugin = require('html-webpack-plugin') |
生成器,promise 等一些内置方法,可能需要额外配置
@babel/plugin-transform-runtime
@babel-polyfill 兼容更高es语法,
1 | // 生产开发都需要 |
1 | // "./app/js" 为js 入口 |
js语法校验: eslint
官网可视化配置,配置完后可直接下载配置文件 .eslintrc.json
1 | let htmlWebpackPlugin = require('html-webpack-plugin') |
例如:将 jQuery 暴露到全局
在代码中通过内联loader 将 jQuery 以 $ 暴露到 全局
1 | import $ from 'expose-loader?$!jquery' |
在配置项中引入,这样
1 | module.exports = { |
每个模块自动注入$
1 | let webpack = require('webpack') |
还可以在index.html 模板 用 script 标签引用 jquery CDN
通过MDN引入的依赖,需要设置不需要打包选项
通过 externals 使webpack 不处理某些依赖库
1 | module.exports = { |
图片的引入方式
1、在 js 中创建 图片引入
2、在css引入 background(‘url’)
3、
1 | import url from './logo.png' |
使用 file-loader 处理
file-loader 默认在内部生成一张图片到 build 目录,把生成图片的名字返回来
background 中的 图片路径 css-loader 回去处理
1 | yarn add file-loader -D |
1 | module.exports = { |
处理页面 img 标签中的 图片 url
1 | yarn add html-withimg-loader -D |
1 | module.exports = { |
url-loader
url-loader 内部实现了 file-loader. 一般代替file-loader处理图片,将体积小的图片转成base64位,减少请求次数.
体积大的图片再用file-loader 处理
1 | module.exports = { |
就是将打包的文件放置指定的文件,使打包文件具有层次
1 | module.exports = { |
多入口,多出口. webpack 会打包多个入口js.
多个html 模板, 需要借助 html-webpack-plugin 插件
1 | let path = require('path') |
1 | let path = require('path') |
代码修改已保存就更新页面
1 | module.exports = { |
实用常用的插件
cleanWebpackPlugin
每次打包时清除上次的dist目录
1 | yarn add clean-webpack-plugin -D |
1 | const CleanWebpackPlugin = require('clean-webpack-plugin') |
copyWebpackPlugin
可以将指定文件或文件夹复制到指定文件
1 | yarn add copy-webpack-plugin -D |
1 | const copyWebpackPlugin = require('copy-webpack-plugin') |
bannerPlugin(wenpack内置)
版权声明,打包后的文件最顶端显示版权声明注释
1 | const webpack = require('webpack') |
前端开发测试时可配置 proxy 解决跨域问题
1 | // 比如 页面服务是 localhost 8080, 接口服务localhost 3000 |
对第三方模块的优化处理
1 | module.exports = { |
1 | const webpack = require('webpack') |
我们在 require 某个依赖时,webpack 默认会去解析这个依赖是否还依赖其他包,有的话就一起打包
noParse 则可设置不去检查这个依赖了
1 | module.exports = { |
在进行某个规则可具体优化。
在引用momentjs 实践处理库时,moment 默认引入了所有语言包,导致文件打包很大,可以设置忽略语言包
1 | // 设置语言包忽略后,如果要设置中文,需要手动引入中文包 |
开发中,有些不会变的模块可以提前打包成库,后边直接使用打包好的库。不需要每次都打包,下次打包体积就变小了
例如:react, react-dom 模块
新增打包配置文件 webpack-config.react.js
1 | let path = require('path') |
webpack.config.js 配置引用
1 | let path = require('path') |
在index.html 中 使用打包好的库
1 | <script src="/_dll_react.js" ></script> |
使用 第三方模块 happypack, 项目体积大的时候会使打包速度变快
1 | let path = require('path') |
tree-shaking
生产环境下打包会去除没用的代码, 但只对 import 语法有效。通过 require 方式引入的模块不会优化
scope hosting
作用域提升
1 | let a = 1; |
多入口环境下才能配置
页面 都引用了 a/b.js. 所以缓存 a/b.js
1 | let path = require('path') |
es6 草案语法 , 不管是 vue,还是react 都是靠这个语法实现的懒加载
1 | import('/xxx.js').then(data=> {}) |
1 | module.exports = { |
监听data模块变化
1 | import str from './data'; |
vue-cli 项目中 vue.config.js
1 | const ImageMinimizerPlugin = require("image-minimizer-webpack-plugin"); |
涉及知识
1 | 1、注册地址 |
在微信公众平台官网首页(mp.weixin.qq.com)点击右上角的“立即注册”按钮。
选择“小程序”,点击“查看类型区别”可查看不同类型账号的区别和优势。
请填写未注册过公众平台、开放平台、企业号、未绑定个人号的邮箱。
登录邮箱,查收激活邮件,点击激活链接。
点击激活链接后,继续下一步的注册流程。请选择主体类型选择,完善主体信息和管理员信息。
主体类型说明如下:
账号主体 | 范围 |
---|---|
个人 | 18岁以上有国内身份信息的微信实名用户 |
企业 | 企业、分支机构、企业相关品牌。 |
企业(个体工商户) | 个体工商户。 |
政府 | 国内、各级、各类政府机构、事业单位、具有行政职能的社会组织等。目前主要覆盖公安机构、党团机构、司法机构、交通机构、旅游机构、工商税务机构、市政机构等。 |
媒体 | 报纸、杂志、电视、电台、通讯社、其他等。 |
其他组织 | 不属于政府、媒体、企业或个人的类型。 |
微信认证入口:登录小程序 - 设置 - 微信认证详情
选择对公打款的用户,请根据页面提示,向指定的收款账号汇入指定金额。
注意:请在10天内完成汇款,否则将注册失败。
选择通过微信认证验证主体身份的用户,完成注册流程后请尽快进行微信认证,认证完成之前部分功能暂不可使用。
完成注册后,在微信公众平台官网首页(mp.weixin.qq.com)的登录入口直接登录。
完成注册后,微信小程序信息完善步骤和开发可同步进行。
选择对公打款的用户,完成汇款验证后,可以补充小程序名称信息,上传小程序头像,填写小程序介绍并选择服务范围。
登录小程序管理后台(mp.weixin.qq.com)– 用户身份 – 成员管理 – 添加成员 。
个人主体小程序最多可绑定15个项目成员,15个体验成员。
未认证、未发布非个人的小程序最多可绑定30个项目成员,30个体验成员。
已认证未发布/未认证已发布非个人的小程序最多可绑定60个项目成员,60个体验成员。
已认证已发布非个人的小程序最多可绑定90个项目成员,90个体验成员。
进入“设置-开发设置”,获取AppID信息。
登录微信公众平台小程序,进入版本管理,开发版本中展示已上传的代码,管理员可提交审核或是删除代码。
填写重要业务页面的类目与标签,重要业务页面组数不多于5组。
当小程序需要开发者提供测试账号才能完成审核体验时,小程序在首次提交审核时将被打回,再次提交审核时将开放提供测试账号的入口,该入口将由开发者提供账号给微信审核人员审核微信小程序时登录使用。
提交审核完成后,开发管理页中审核版本模块展示审核进度。
提示:
代码审核通过,需要开发者手动点击发布,小程序才会发布到线上提供服务。
注意:
内测期间,代码发布按钮不可点击。
https://mp.weixin.qq.com/debug/wxadoc/dev/demo.html
实例源码
可在微信中搜索“小程序示例”
1 | 所有项目源代码、资源文件等内容都将在微信公众号中提供下载地址。读者可以从我的微信公众号中获取项目效果图和最新版本源代码。代码包括Orange Can项目的小程序代码及部分功能的服务端PHP代码。 |
1 | batchfile |
tag:
缺失模块。
1、请确保node版本大于6.2
2、在博客根目录(注意不是yilia-plus根目录)执行以下命令:
npm i hexo-generator-json-content --save
3、在根目录_config.yml里添加配置:
jsonContent: meta: false pages: false posts: title: true date: true path: true text: false raw: false content: false slug: false updated: false comments: false link: false permalink: false excerpt: false categories: false tags: true