前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >玩转编程语言:基于Node.js构建自定义代码生成器

玩转编程语言:基于Node.js构建自定义代码生成器

原创
作者头像
RiboseYim
发布2018-01-12 21:40:29
1.8K0
发布2018-01-12 21:40:29
举报
文章被收录于专栏:睿哥杂货铺睿哥杂货铺

在真实的软件开发过程中,无论使用何种编程开发语言,都不可避免的会遇到代码重复的问题。如何处理重复的问题,可以选择情怀(手动再敲一遍),也可以选择 Copy-to-Copy ,或者选择代码生成器。正如在之前的文章 我的写作工具链 中,我介绍过一种 Blog 生成器 hexo ,可以将 Markdown 格式的内容自动生成方便发布的 HTML 格式。本文将还原 hexo 的运行原理,为解决类似问题提供一些参考思路。

示例:通过 Markdown 文件声明模板(源代码),通过脚本生成 HTML 文件(目标代码),并预览代码生成效果。

Step 1: 准备环境 (dependencies)

开发语言 Node.js, 一个能够运行 JavaScript 的开放源代码、跨平台运行环境。

  • npm init — 初始化 root 目录
  • npm i -s live-server — 该模块支持本示例生成静态 HTML 站点,提供热部署能力
  • npm i -s nodemon — 该模块支持当文件变化自动执行重构任务
  • npm i -s concurrently — 该模块支持支持并发执行任务、脚本(scripts/tasks)
  • npm i -s markdown-it — 该模块提供 Markdown 文件解析器
Step 2: 准备元数据

例如:pages/index.md

例如:pages_meta/index.json 用于存储一些需要的元数据(参数、固定内容等),JSON 文件格式方便后面调用。

Step 3: 编写模板和构建脚本(template & build Script)

代码生成器中需要定制开发的部分包括 builder.jspages_template.js。build.js 相当于 main 函数,控制入口和流程,加载资源数据、调用 generator 任务,与 Makefile 和 Ant.xml 非常类似。pages_template.js 依赖的组件是 markdown-it ,负责将 Markdown 源文件转换输出成 HTML 文件。builder.js 将 pages_template.js 视为一个模块引用:pageTemplate.generatePage(pageContent, metaData)) 因此可以根据需要定制多个不同的 XXX_template.js 或者在每个 template.js 中定义其它函数。

builder.js

pages_template.js

Step 4: 优化任务脚本

在 Step 1 步骤中,npm init 创建了一个文件:package.json,我们可以定义其中的 “scripts” , 执行 npm run start 将默认在 1080 端口开启 Web 服务。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Step 1: 准备环境 (dependencies)
  • Step 2: 准备元数据
  • Step 3: 编写模板和构建脚本(template & build Script)
  • Step 4: 优化任务脚本
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档