Nodejs作爲後端語言,直接進行DOM操作是違背分離原則的。
但如果是個人的小網站,稍微靈活一點也沒有壞處不是。
這裏介紹的是cheerio這個插件,是基於jquery實現並稍有精簡,目的是爲nodejs提供像jquery一樣的dom操作
ps:本來jsdom也是一種選擇,但可惜最新版本的jsdom不再支持nodejs
下面看一個例子:
//這個方法從filelist.txt裏面讀出文件名,將其添加到index.html中類爲listselect的select標籤下
function getFileList(){
var content = fs.readFileSync('./index.html');
$ = cheerio.load(content);
$('select.listselect').empty();//避免重複,加載前先清空標籤下所有子標籤
lineReader.eachLine('./filelist.txt',function(line,last){
//lineReader是一個按行讀取文件的nodejs插件,可自行安裝
var file = line.substr(line.lastIndexOf(' ')+1);
$('select.listselect').append('<option class="listoption" value='+file+'>'+file+'</option>');
if(last){
fs.writeFile("./index.html", $.html(),function(err){
if(err) throw err;
console.log("Saved");
});
return false;
}
});
關於爲什麼會有
$ = cheerio.load(content);
這樣的寫法確實很讓人糾結,必須是$這個符號不然就會出錯,我個人理解成爲了看起來和jquery裏的選擇器保持一致而特意這樣寫的
更多操作可以看
https://npmjs.org/package/cheerio
官方文檔或者下面的翻譯文檔
https://cnodejs.org/topic/5203a71844e76d216a727d2e