Skip to content

Commit

Permalink
docs: add contents
Browse files Browse the repository at this point in the history
  • Loading branch information
nozomuikuta committed Jan 4, 2025
1 parent 4c85912 commit 3b4cd59
Showing 1 changed file with 82 additions and 0 deletions.
82 changes: 82 additions & 0 deletions docs/content/ja/concepts/environments.draft.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
# 環境

::: tip 🎯 このページのゴール

- TBD
:::

Viteには環境の概念があります。ここでいう環境とは、コードの実行環境のことです。

## 関数のふるまい

関数は、引数で変える。

```ts
function getMessageTo(name) {
return `Hello, ${name}!`
}

console.log(getMessageTo('Alice')) // Hello, Alice!
console.log(getMessageTo('Bob')) // Hello, Bob!
```

## 関数のカーリー化

関数を返す。

```ts
const createGetMessageTo = function (name) {
return function () {
console.log(`Hello, ${name}!`)
}
}

const getMessageToAlice = createGetMessageTo('Alice')
const getMessageToBob = createGetMessageTo('Bob')

console.log(getMessageToAlice()) // Hello, Alice!
console.log(getMessageToBob()) // Hello, Bob!
```

## 関数のメタプログラミング

関数のカーリー化では、関数のふるまいの一部を変更することができました。
Functionコンストラクターを使用して、任意のコードを実行できます。

```ts
const codeOfSayHelloToAlice = `console.log('Hello, Alice!')`
const codeOfSayHelloToBob = `console.log('Hello, Bob!')`

const sayHelloToAlice = new Function(codeOfSayHelloToAlice)
const sayHelloToBob = new Function(codeOfSayHelloToBob)

sayHelloToAlice() // Hello, Alice!
sayHelloToBob() // Hello, Bob!
```

Functionコンストラクターに渡す文字列がどのように定義されているかに制限はないため、任意のJavaScriptファイルを読みこんで、その内容を実行することができます。

```ts
// mycode.mjs
return `Hello, Alice!`
```

```ts
// runner.mjs
import fsPromises from 'fs/promises'

async function runCode() {
const code = await fsPromises.readFile('./mycode.mjs', 'utf-8')

return new Function(code)
}

console.log(await runCode()) // Hello, Alice!
```

---

::: info ✨ まとめ

- TBD
:::

0 comments on commit 3b4cd59

Please sign in to comment.