##监视文件
监视文件变化:
- fs.watchFile(filename[, options], listener(curr,prev))
+ options:{persistent,interval}
- fs.watch(filename[,options][,listener])
##例子:
利用文件监视实现自动 markdown 文件转换
https://github.com/chjj/marked
https://github.com/Browsersync/browser-sync
##Markdown文件自动转换
- 实现思路:
1. 利用`fs`模块的文件监视功能监视指定MD文件
2. 当文件发生变化后,借助`marked`包提供的`markdown` to `html`功能将改变后的MD文件转换为HTML
3. 再将得到的HTML替换到模版中
4. 最后利用BrowserSync模块实现浏览器自动刷新
browsersync需要用到Python
```javascript
const fs = require('fs');
const path = require('path');
const marked = require('marked');
const browserSync = require("browser-sync");
// 接收需要转换的文件路径
const target = path.join(__dirname, process.argv[2] || '../README.md');
// 转换为HTML后保存的位置
var filename = target.replace(path.extname(target), '.html');
// 获取HTML文件名
var indexpath = path.basename(filename);
// 通过browsersync创建一个文件服务器
browserSync({
notify: false,
server: path.dirname(target), // 网站根目录
index: indexpath // 默认文档:(如果浏览器访问一个目录的话,默认返回那个文件)
});
// 监视文件变化
fs.watchFile(target, { interval: 200 }, (curr, prev) => {
// 一旦文件变化,触发该函数
// 判断文件到底有没有变化, 减少不必要的转换
if (curr.mtime === prev.mtime) {
return false;
}
// 读取文件 转换为新的HTML
fs.readFile(target, 'utf8', (err, content) => {
if (err) {
throw err;
}
var html = marked(content);
// 注入CSS样式
fs.readFile(path.join(__dirname, 'github.css'), 'utf8', (err, css) => {
html = template.replace('{{{content}}}', html).replace('{{{styles}}}', css);
// 这里的HTML就已经有内容 有样式
fs.writeFile(filename, html, 'utf8', (err) => {
// 通过browserSync发送一个消息给浏览器,流量器刷新
browserSync.reload(indexpath);
console.log('updated@' + new Date);
});
});
});
});
var template = `
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<style>{{{styles}}}</style>
</head>
<body>
<div class="vs">
{{{content}}}
</div>
</body>
</html>
`;
*****
- 简介
- 配置安装
- window
- 基础知识
- Node 命令基本用法
- 进程和线程
- 调试
- 异步、回调
- 全局对象
- 非阻塞 I/O和事件驱动和非阻塞机制
- npm包概念
- 模块化
- 实现require和cache
- 核心模块操作
- fs文件系统操作
- 同步调用和异步调用
- 缓冲区处理(二进制数据)
- 文件读取
- 文件写入
- 例子:读取歌词文件显示
- 文件流
- 例子:文件复制
- 监视文件
- 其他文件操作
- 目录操作
- 例子:递归加载目录树
- path路径操作模块
- 网络操作
- URL 解析模块
- querystring查询字符串模块
- crypto加密解密模块
- Socket
- 例子:聊天室
- coffeescript
- Gulp-自动化构建工具
- Gulp实现前端构建
- Gulp后端构建
- 插件
- gulp-load-plugins 模块化管理插件
- gulp-minify-css 压缩css插件
- gulp-sass 将sass预处理为css
- gulp-less 将less预处理为css
- gulp-sourcemaps 插件
- gulp-concat 合并插件
- gulp-uglify 压缩JS插件
- gulp-util gulp常用工具库插件
- yargs插件
- gulp-nodemon 自动启动/重启插件
- coffee-script 插件
- gulp-coffee插件
- gulp-livereload 网页自动刷新
- Moment.js-处理时间插件
- express 前端框架
- Async-异步流程控制插件
- node-progress进度条插件
- JSHint-代码规范检查工具
- lodash -JavaScript 工具库
- 资料
- 框架所用包
- bodyParser
