JavaScript

ファイル書き込み時の注意点

直ちにファイルに書き込んでほしいときはfs.fsyncを呼び出すこと。

参考記事

ファイルの書き込み関数を使った後すぐに実際のファイルに保存されるわけではないので、すぐに書き込んでほしいときはfs.fsyncSyncを使う。

すぐに書き込まれないのはパフォーマンス上の都合で、これはOSレベルの話でほかの言語でも同じことである。

fs.fsyncがファイル情報も書き出し、fs.fdatasyncはデータのみをファイルに書き込む。 そのため、純粋にデータのみを書き込んでほしいときはfs.fdatasyncを使うといい。

以下、参考記事から抜粋 fs.fsyncは非同期的に書き込むので、すぐに書き込んでほしいときはfs.fsyncSync()を使うこと。

const fs = require('fs')

fs.open('./fsync_test.txt', 'w', (err, fd) => {
    fs.write(fd, 'fsync() test\n', () => {

        // ここがポイント!!
        fs.fsyncSync(fd);

        response.writeHead(200, {'Content-Type': 'text/plain'})
        response.end('Write success\n');
        fs.close(fd, ()=>{});
    })
})

TypeScript

ES6でimport/exportがJSに導入されたが、TypeScriptのimport/exportとは下の感じで対応しているそうだ。

Difference between 'export' and 'export default' in JavaScript? [duplicate]

// Three different export styles
export foo;
export default foo;
export = foo;

// The three matching import styles
import {foo} from 'blah';
import foo from 'blah';
import * as foo from 'blah';

は下のように(雰囲気)変換されるみたい。

exports.foo = foo;
exports['default'] = foo;
module.exports = foo;

var foo = require('blah').foo;
var foo = require('blah')['default'];
var foo = require('blah');