學習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)
})
這樣就能正常寫入檔案了了。
相關文章
- 學習Python開發難不難?哪些人適合學習Python?Python
- 《10000個科學難題》
- go 的個人學習Go
- 個人學習
- The Next Step for ML 機器學習落地需攻破的9個難題機器學習
- The Next Step for Machine Learning 機器學習落地需攻破的9個難題Mac機器學習
- 2019機器學習試題及個人思路機器學習
- #關於學Web時遇上的奇葩問題Web
- Android學習: 疑難問題總結Android
- 學習Python難不難?Python
- node Buffer 學習
- 【學習】分享幾個學習中的小問題
- fastapi個人學習記錄ASTAPI
- 【個人成長】在家學習的這兩個月
- Flex 佈局:個人的學習與理解Flex
- 財務分析不再是難題!Smartbi教你財務資料人都該學習的分析方法
- C++和Python學哪個好?Python學習難嗎?C++Python
- node學習歷程
- Python學習起來難不難?Python
- 一個新手學習PYTHON困難度有多大Python
- Redis學習的幾個小問題Redis
- 學習Java開發難不難?好學嗎?Java
- Bootstrap 個人學習知識點boot
- jQuery 個人學習知識點jQuery
- 個人學習性文章統計
- 個人技能評估 學習指南
- 個人學習系列 - SpringBoot整合RabbitMQSpring BootMQ
- Python常見面試題總結——個人Python學習經驗Python面試題
- node nest 框架學習(一)框架
- Node fs模組學習
- node fs學習筆記筆記
- node學習—express基本使用Express
- <node.js學習筆記(完)>pug,mongodb命令(之後是node的案例,一個部落格)Node.js筆記MongoDB
- JS 學習個人知識盲點JS
- 《聯邦學習》——個人筆記(二)聯邦學習筆記
- php+mysql 個人學習部落格PHPMySql
- C# 學習async/await(個人理解)C#AI
- MindSpore聯邦學習框架解決行業級難題聯邦學習框架行業