处理静态资源
js的打包基本处理完了,还有图片、音频等静态资源需要处理。
依然先装依赖:
1 | $ npm i -D url-loader file-loader |
增加webpack配置:
1 | // webpack.base.js |
tips: 生产环境需要合理使用缓存,需要拷贝一份同样的配置在
webpack.prod.js
中,并将name中的hash
改为contenthash
心者,栖神之舍;神者,知识之本;思者,神识之妙用也。
js的打包基本处理完了,还有图片、音频等静态资源需要处理。
依然先装依赖:
1 | $ npm i -D url-loader file-loader |
增加webpack配置:
1 | // webpack.base.js |
tips: 生产环境需要合理使用缓存,需要拷贝一份同样的配置在
webpack.prod.js
中,并将name中的hash
改为contenthash
有了webpack的基础配置,还不足以支持打生产环境能够使用的包,我们还需要增加一些配置。
首先,每次打包前最好能把上一次生成的文件删除,这里可以用clean-webpack-plugin插件实现:
1 | $ npm i -D clean-webpack-plugin |
然后修改webpack基础配置:
1 | // webpack.base.js |
在生产环境,我们希望部署新版本后能够丢弃缓存,又希望保留没有被改动的文件的缓存,而在开发环境,我们希望完全不使用缓存,因此我们需要在当前配置的基础上,分别扩展生产和开发两套配置。
项目github仓库地址: https://github.com/mecoepcoo/ts-react-boilerplate
这个系列的文章主要讲述如何从一个空目录建立webpack+react+typescript+eslint脚手架,书写此文时各主要工具的版本为:
v4
v16.9
v3.5
v7
v6.2
本文涉及的内容大致包含:
阅读这个系列的文章需要具备的条件:
vue
,react
或angular
等任意一种前端框架vue-cli
,create-react-app
,angular-cli
等任意一种脚手架生成工具webpack
的基本原理或用法本文介绍如何使用docker在本地搭建一个简单的mysql开发环境。
使用本文用例需要预先安装好docker,windows用户直接下载windows版本的docker客户端即可,使用linux容器或windows容器都不影响结果。
运行命令:
1 | $ docker run -p 3308:3306 -v /home/dev-enviroment/:/var/lib/mysql -d -e MYSQL_ROOT_PASSWORD=1234 mysql |
这句命令的意思是,使用docker启动一个名为mysql的容器,如果本地没有这个容器,则从远程仓库中寻找,容器启动后,将容器内的3306端口映射到宿主机的3308端口,并将容器内的/var/lib/mysql
目录映射到宿主机的/home/dev0enviroment
目录,-d
表示在后台运行,容器启动后仅返回容器id,-e
表示配置环境变量
注意:windows用户使用cmd, powershell或者gitbash等不用的命令行工具时,需要输入的路径可能不同,视终端和容器类型而定,可以尝试d:/dev
或者/d/dev
等形式。
对于容器内服务来说,宿主机是一台远程主机,需要修改配置以支持数据库连接。
1 | $ docker exec -it 01873d bash # 以交互模式进入容器,并运行bash,这里的01873d是container id的前几位 |
1 | -- 允许远程连接 |
现在打开navicat等工具,连接localhost:3308
即可访问数据库了。
如果docker被关闭,只需要运行以下命令就可以恢复数据库服务:
1 | $ docker ps -a |
Win 系统的控制台默认编码不是utf-8,使用vscode,git bash等工具时经常在控制台看到乱码。
调整这些配置,就能让控制台正确显示中文。
win+R
打开运行,输入 regedit
回车,打开注册表编辑器,找到HKEY_CURRENT_USER\Console\
在里面的每一项中,新建名为CodePage
(如果已有则修改)的DWORD值,数值设为十进制65001即可node-canvas 是 node 环境用来绘制图形的工具,我在 windows 10 环境和 docker 中 node-alpine 安装此工具时遇到了一些困难,以此文记录 trouble shooting 经历。
在不同的设备上使用 vs code,配置可能会不一样,比如eslint工具,各种插件的配置。使用 vs code 的 Settings Sync 插件就可以简单地同步配置。
这个插件的原理其实就是利用 github gist(代码片段功能)来保存和同步配置信息。
本文记录如何使用registry镜像创建docker私有仓库,并试验将一个本地镜像推送到私有仓库。
docker官方提供了一个registry镜像供我们搭建本地私有的仓库环境。
执行命令,这个命令会自动下载registry容器,并创建私有仓库服务。仓库默认被创建在/tmp/registry
下:
1 | $ docker run -d -p 5000:5000 registry |
用这种方式创建,一旦容器被删除,则镜像也会丢失。我们也可以指定一个其他目录来创建仓库:
1 | $ docker run -d -p 5000:5000 -v /opt/data/registry:/tmp/registry registry |
现在本地已经在5000端口自动启动了一个私有仓库服务。
使用jenkins+github+docker是一个很常用的持续集成、持续交付方案了,这篇文章描述了搭建这套系统的流程,记录了一些坑点。
1 | # 下载解压(注意用wget要先点下载,然后把带auth参数的链接放到wget) |
在底部加入如下,注意目录名别配错了:
1 | JAVA_HOME=/usr/java/jdk1.8.0_201 |
运行source /etc/profile
让配置立即生效
验证安装:java -version
,javac
1 | $ wget http://mirrors.jenkins.io/war-stable/latest/jenkins.war |
然后访问 ip:8080即可
1 | $ docker pull jenkins/jenkins:lts |
这时候用 ip:8080 就可以访问了,进去以后设置好初始admin账户密码,插件选推荐就行了。
至此,github+jenkins+docker的环境就搭好了,随后可以在jenkins中执行预先编写好的makefile和dockerfile来打包docker镜像和部署应用,本文不赘述makefile和dockerfile等的具体使用方法。
用vue和react做开发,我们经常选择vuex,redux一类的状态管理工具来辅助管理状态,状态逻辑复杂的微信小程序,如果有状态管理工具的话,可以极大地提高开发效率和可维护性。
想象这样一个场景,一个用户修改了用户名,小程序中有十多个组件都用到了这个“用户名”这个状态,如果需要把这些显示都更新,用原生的方式来实现是很麻烦的,本文介绍一种方法,基于rxjs来管理小程序中的各种状态。
rxjs学习资料:
我们尽量避免多余的构建工具,直接使用umd版本的rxjs,下载地址:https://unpkg.com/rxjs/bundles/rxjs.umd.min.js,下载好后,把它放在lib
目录中。
新建一个stores
目录,把状态相关的文件都放在里面,在stores
下新建一个user.js
,用来管理用户的状态。
新建services
目录,存放api相关的服务,在services
中新建user.js
,用来存放请求用户数据的函数。
demo:
1 | // services/user.js |
实现的思路是这样的:
首先创建一个status
,用来保存用户的状态,用户状态是一个subject
,这样就可以向各个组件中的订阅
发送组播
。
然后写一系列的action
,action的名称表示要执行的动作,在action函数中完成一些异步操作,比如重新获取用户信息,我们之后会把它的返回值广播给所有的订阅。
最后是dispatch
函数,它描述了如何修改状态值,dispatch根据传入的action名称,执行不同的action和逻辑,最终用subject.next()
方法把数据广播给每个订阅。
有了这组代码,我们只需要在使用数据的地方订阅就可以了:
1 | // 在某个page中 |
3秒后,将会看到page和component中的name都变成了’laoming’,这样就实现了简单的状态管理。