學習node遇上的難題--個人
現在呢根據自己的需要開始學node.js,但學了不久就遇到了一個問題,所以記錄下來。
封裝的fs.writeFlie,我隨便命名為ss.js
ss.js
//載入fs
const fs = require('fs')
//非同步
function fswrite(path,con){
return new Promise(function(resolve,reject){
//寫入檔案,這裡的flag:a表示內容追加。
fs.writeFile(path,con,{'flag':'a',encoding:"utf-8"},function(err){
//判斷是否寫入成功
if(err){
reject(err)
//也可以列印一下
console.log('寫入失敗')
}else{
resolve(err)
console.log('寫入成功')
}
})
})
因為node是沒有全域性作用域的,只有模組作用域。(我的理解是,檔案與檔案之間是互不影響的,都是封閉的),所以我們需要將它掛載,讓其他檔案也能夠訪問到,所以在ss.js檔案最後面加上module.exports = fswrite.
//載入fs
const fs = require('fs')
//非同步
function writess(path,con){
return new Promise(function(resolve,reject){
//寫入檔案,這裡的flag:a表示內容追加。
fs.writeFile(path,con,{'flag':'a',encoding:"utf-8"},function(err){
//判斷是否寫入成功
if(err){
reject(err)
//也可以列印一下
console.log('寫入失敗')
}else{
resolve(err)
console.log('寫入成功')
}
})
})
//加上,fswrite是函式名
module.exports = writess
然後還需要在需要使用該方法的檔案中引入才能使用。(以下程式碼是通過提問事件來操作,正常訓練時不必寫這麼多,我記下來只是對我自己有用,正常訓練時只需要)
//引入
const writess = require('./ss')
writess('檔名','寫入的內容')
這是我要記下的。正常測試是不用這麼多的
//載入readline
const readline = require('readline')
//引入ss檔案,這樣就能訪問到ss.js檔案裡的東西了。
let writess = require('./ss')
//建立readline介面例項
var r1 = readline.createInterface({
//process的意思好像是在終端顯示
input:process.stdin,
output:process.stdout
})
//非同步,
function ti(title){
return new Promise(function(res,req){
//設定r1的提問事件
r1.question(title,function(data1){
res(data1)
})
})
}
function runding(){
let xx =ti("你是誰")
let content1 =`你真的是?${xx}\n`
writess("node學習.txt",content1)
r1.close()
}
//呼叫
runding()
//監聽
r1.on('close',function(){
process.exit(0)
})
但如果就這樣,執行命令之後,會發現寫入檔案的內容卻是
你真的是?[object Promise]
所以需要使用async/await來進行非同步,程式碼如下
const readline = require('readline')
let writess = require('./ss')
var r1 = readline.createInterface({
input:process.stdin,
output:process.stdout
})
function ti(title){
return new Promise(function(res,req){
r1.question(title,function(data1){
res(data1)
})
})
}
//這裡變了。
async function runding(){
let xx = await ti("你是誰")
let content1 =`你真的是?${xx}\n`
await writess("node學習.txt",content1)
r1.close()
}
runding()
r1.on('close',function(){
process.exit(0)
})
這樣就能正常寫入檔案了了。
相關文章
- go 的個人學習Go
- 個人學習
- #關於學Web時遇上的奇葩問題Web
- 深度學習的難點深度學習
- Android學習: 疑難問題總結Android
- 學習Python難不難?Python
- node Buffer 學習
- java的個人學習經驗Java
- 個人學習jdon框架的疑惑!框架
- 學習Java開發難不難?好學嗎?Java
- Node fs模組學習
- node學習歷程
- Node 學習 -- jade
- node學習筆記筆記
- Node進階學習
- Python學習起來難不難?Python
- 老遊戲遇上新問題:當動森遇上詐騙遊戲
- 學習java很難嗎?Java
- vue難不難?新手學習多久能上手?Vue
- Node 快速學習 crypto 模組
- node nest 框架學習(一)框架
- node學習—express基本使用Express
- node fs學習筆記筆記
- 如何正確學習Node
- Flex 佈局:個人的學習與理解Flex
- MindSpore聯邦學習框架解決行業級難題聯邦學習框架行業
- 技術學習選擇的困難
- Bootstrap 個人學習知識點boot
- jQuery 個人學習知識點jQuery
- 學習Python開發難不難?哪些人適合學習Python?Python
- 當深度學習遇上敏捷開發,會發生怎樣的“化學反應”?深度學習敏捷
- 初學Node.js--學習隨筆Node.js
- node學習筆記之39筆記
- node模組化之require學習UI
- Node.js學習備案Node.js
- Node.js學習——開篇Node.js
- node 核心模組學習之 Buffer
- node基礎學習筆記筆記