GX博客

分享个人 Full-Stack JavaScript 项目开发经验

文章按专题分类,介绍在开发、部署、运维等环节可能遇到的技术和个人经验分享。

前端开发

Git

本专题暂不探讨 Git 衍生的具体工作流,而是先主要介绍 Git、Gitlab 等工具的使用及其使用过程中可能会遇到问题的解决方法。

Bootstrap

一个开源的响应式布局前端开发框架。交互脚本基于 JQuery 编写,而 CSS 样式源码有基于 Less 和 Sass 的两个版本。它以 Grunt 作为项目构建系统,完成 CSS 的编译、Javascript 的测试合并压缩等任务。有完善的文档和丰富的组件,让 web 前端开发更迅速、简单。

Grunt

Grunt 本质上是基于 Node.js 的 Javascript 任务运行器,在前端项目构建时,自动化完成一系列反复的任务,如合并、压缩、编译、监听刷新等。完成构建工作同时,兼备部分项目打包功能,还能和 Webpack 协作。它可帮助你高效地构建一个模块化、易扩展、易管理的前端项目。

React

它是使用函数式编程,以组件化方式构建用户界面的 JavaScript 库。它可以实现代码的同构性,运行于 Node.js 端、浏览器端和 React Native 中。它使用 JSX 编写声明式组件,并因单向数据流,使你的代码更加可靠,容易测试。利用组件合成可复用组件代码。当你遵循其最新规范编写应用,你会发现事情突然就变得“简单”了。

Gulp

基于流的自动化构建工具。与 Grunt 的构建思想十分相近,但它对任务的执行有独特的优点。它基于 node.js 的 stream 流能力,减少对磁盘的读写以提高构建速度。同时,可以利用 lastRun API 实现更快的增量构建。任务异步执行,亦可以很灵活地组合并行和有序的执行。它简易的任务注册和监听机制也极具魅力。

前端基础

在 Web 的前端开发中,会接触到很多关于 HTML、CSS、JavaScript 的知识。它们是前端开发的基础,且发展快、涉及面广。深入理解它们的特性和原理有助于我们快速解决实际开发中遇到的各种问题。

webpack

webpack是目前流行的JavaScript打包工具。它非常适合于模块化开发的JavaScript应用程序。通过合并@babel/polyfill模块及配置babel-loader,以支持es6语法的使用。它最后把所有的这些模块及依赖打包成一个或多个可用于生产环境的js包,以提高应用程序的加载速度。

Sass

作为CSS的扩展,可组件化构建前端项目。有如Compass这样的基于Sass的框架,让你CSS3开发变得更加容易;也有基于Sass的开发版Bootstrap前端开发框架,让你轻松自定义合适的组件。

后端开发

Nginx

它是一个高性能的轻量级Web服务器。与Node.js配合,它可以作为一个SSL连接器,及反向代理,实现负载均衡。除此之外它还可以实现压缩数据、缓存数据、维护日志、设置安全限制、URL重写等功能,并且这些只需要通过安装第三方模块和修改配置文件来实现。

Redis

Redis 是一个开源的内存数据结构存储系统,它可以用作数据库、缓存和消息中间件。本专题会主要介绍 Redis 的基础使用、在 kubernetes 上的部署以及与 Node.js 客户端的集成等。

MySQL

它是当今广泛使用的关系型数据库之一。最新发布的 MySQL 8,较以前更好、用更高效。它优化了 JSON 数据类型的操作,支持公用表表达式等等。

Koa

基于 Node.js 平台的下一代 Web 开发框架,使用 async 函数,丢弃回调函数方式的异步编程。Koa 没有捆绑任何中间件,允许你根据项目需要,引入如服务器端模板引擎、数据库查询、Session等中间件。让你优雅、快速地完成 Web 应用和 API 的开发。

Node.js

Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境。 它使用事件驱动、非阻塞式 I/O 模型。同时,它使 Javascript 代码可以在浏览器和服务器端间实现同构性。搭配 Nginx 可以实现安全性好,高并发能力的稳定 Web 应用。

部署运维

SEO

搜索引擎优化是为了使网站所取关键词在被用户搜索时网站能够获得更好的排位,增加曝光率。它除了取决于关键词的定位、文章的撰写技巧、外链软文的发布等,还涉及一些网站技术相关的要求。例如合理使用nofollow属性处理外链、使用robots文件屏蔽无关紧要的页面、保持代码简洁且语义化、使用URL重写简化网站路径及利用缓存技术提高网站响应速度等等。

CentOS 7

CentOS(Community Enterprise Operating System)是一个社区企业操作系统。本专题将介绍 Web 应用在 CentOS 7 下的部署方法。

网络安全

信息技术的飞速发展也伴随着新的漏洞和攻击方式的产生。对于 Web 应用,如何稳定可靠地运作,确保用户敏感信息安全等尤为重要。当 Web 应用崩溃时如何恢复,如何通过审计日志找出并修复 bug,维护自身合法权益等都是切切实实的网络安全问题。

k6.io

k6是一款开源的负载和性能测试工具。它强大的基于 JS ES6 的 API,可以方便集成到自己的工作流和自动化管道中。这也允许你可以使用同一份 JS 代码来实现请求数据加密、token 获取等。它简单的 CLI,可用于本地和云执行,并且提供了丰富数据可视化输出方案。用它可实现自动化测试,快速发现性能问题,核实产品负载能力等,从而使产品上线更加可靠。

Docker

Docker 让大规模的多服务部署和管理变得简单。应用的容器化、容器即服务已成为一种趋势。就此,镜像的管理、服务的编排和集群、网络的覆盖、数据的持久化、应用的更新备份和恢复,还有日志和安全等问题是应用容器化要处理的主要问题。而作为 Docker 之上的平台,Kubernetes 成为了该体系重要的一部分。它保证着容器的部署和运行等工作。

Jenkins

Jenkins 是开源的 CI&CD(持续集成、交付和部署)软件,它众多插件为自动化构建和部署提供支持。例如,从 Gitlab 中拉取源码、在特定容器环境下构建项目、构建并推送镜像到远程仓库、执行远程 ssh 和 sftp 命令、与 Gitlab webhooks 结合来自动执行流水线、构建失败后发送邮件通知等。这些都只需要安装必要插件并在 Jenkinsfile 中声明阶段和步骤来实现。