前端模块化
为什么需要模块化 在有模块化以前 我们来看下面一段代码 123456789101112131415<!DOCTYPE html><html lang="en"> <head> <meta charset="UTF-8" /> <meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Document</title> </head> <script src="a.js"></script> <script...
docker部署jenkins
背景因为另一台服务器今年到期,不打算再续费了(有些承受不住)。之前 jenkins 是直接安装在这台服务器上的,步骤繁琐且不方便迁移,因而这次想通过 docker 来部署 jenkins ;在本地实践后发现简单易上手,因而记录一下,后续就可以实现自己项目的发布。 docker 安装 jenkins通过 docker search 命令查找 docker 官方 jenkins 镜像。一般使用 jenkins/jenkins 这个,第一个 jenkins 镜像启动会有一些警告提示,因而没有采用。 拉取完后就可以直接运行镜像创建一个 jenkins 容器了。(eg:记得先打开服务器防火墙的端口) 123docker run -d --restart always -ti -p 主机端口:8080 jenkins/jenkins添加上 --restart always 参数 表示出现问题会重启 启动后可以看到默认的登陆密码,如果后续忘记了,需要通过进入 jenkins 的容器内查看 1234docker exec -it 容器id /bin/bash#...
关于我被主页面嵌入iframe设置sandbox折磨一天的事
背景在一个已经维护很久的系统中,突然产品说功能 10 点之后不能用了。项目是被第三方通过 iframe 嵌入的一个页面表单操作。在和后台经过一天的友好交流(被甩锅)和查找问题原因(互相甩锅)之后,发现并不是我和后台的问题,在查找问题原因中学习到了 iframe 中设置 sandbox 属性可以起到的一些作用。所以记录一下。 具体现象当时进入页面后初始化相关的接口都请求不通,产品说后台说是我的问题(又被甩锅),我看了下发现都是 cors 跨域问题。然后发截图给后台,如此这般这般如此,battle 到下午。在排查问题中发现有段不是造成产生问题原因的代码被我发布到了线上,然后就顺手给恢复到了最开始的状态,是一段 localstorage.getItem 的代码被我覆盖成了一个固定值。然后就重新恢复了发布上去了。结果出现了接口没有请求的问题,点击事件也不执行,只出现了 Blocked form submission to '' because the form's frame is sandboxed and the 这样一段报错提示。把刚才改的...
jenkins+docker部署node服务
前言之前已经成功通过 jenkins 实现自动部署项目,是通过 build 打出 dist 文件,通过 nginx 来访问的,这次想部署一个 node 后台服务,发现之前的方式不太行的通,在经过几天的摸索和实践后,最终采用 docker 容器来部署项目,通过 jenkins 来触发 docker 命令来完成整套流程。 项目配置技术选型项目主要使用koa+sequelize来搭建,koa是一个轻量级的node框架,sequelize是一个可以操作数据库的ORM,帮助我们连接数据库。项目部署通过docker compose 来同时启动两个容器,node容器通过sequelize连接mysql容器。 12345678910111213141516171819202122232425项目结构|-- .dockerignore //docker忽略文件|-- .gitignore|-- Dockerfile //docker镜像文件|-- docker-compose.yml //docker compose执行文件|-- package.json|-- src |--...
docker分享
源于一次内部分享公司的项目上线后,都运行在 docker 容器中。同时由于运维同事在项目遇到问题时,会要求我们把项目先在本地搭建的 docker 容器运行,没有问题再推上服务端发布。但团队中没有同事了解 docker,技术交接文档中也没有对 docker 进行描述的内容,因而利用了空闲时间(摸鱼时间)整理了一篇 docker 文档,现在记录一下可以分享到外网的部分。 docker 是什么docker 是一种虚拟化容器技术,将应用程序与程序所依赖的环境,打包到一个文件里,运行这个文件,产生一个虚拟容器,让程序在这个容器中运行。可以让我们忽略环境问题,方便我们的开发。 docker 的组成三个核心概念:Image、Container、Repository Image:镜像。镜像是层叠的,最底层是 Linux 内核。 Linux 系统分为内核和用户空间,在启动内核后,通过挂在 Root 文件系统来提供用户空间,docker 镜像就是一个 Root 文件系统,提供来容器运行所需要的程序、库、资源、配置等文件。镜像在构建之后也不会发生改变。 Container:容器。容器是镜像的实例。...
低版本抖音app上小程序中的getCurrentPage函数bug
产生背景公司之前上线了一个字节小程序,发布在了抖音上,这次有一些内容的改动,在做完后,测试告诉我有一处路由跳转功能失效,在出问题手机上打开调试排查代码过程中,发现了 getCurrentPage 的问题 问题解决随后在排查问题中发现了字节跳动小程序 getCurrentPage 函数在不同版本上的问题,主要原因在于抖音低版本所对应的基础库版本造成的。出问题的点是通过 getCurrentPage 函数执行后的返回里想使用 route 来获取路径信息,出问题手机上的抖音 app 版本是 10 左右,所对应的基础库版本未知,因为当想查看的时候测试已经把抖音版本升级到最新的 18 了。在抖音 10 的版本中 getCurrentPage 返回里,是没有 route 属性的,只有_**_route___**属性。如下图: 可以看到只有_**route**属性,但在最新版本的抖音中,可以看到有三个属性来表示当前路径,分别是 is、route、route___,如下图: 所以之前公司上线的版本没有出现这次复现的问题,因此可以对 getCurrentPage...