LoginSignup
6
10

More than 5 years have passed since last update.

ASP.NET MVC 5 + TypeScript + ReactでWebアプリ

Last updated at Posted at 2018-05-01

はじめに

ほとんど以下のURLのまま。ありがとうございます。
http://blog.okazuki.jp/entry/2016/09/03/145059

ただし、ASP.NET MVCでViewを使用しようと思うので、少しだけ違う構造になるのでそこだけ備忘録。

備忘録

webpackの設定

本記事投稿時、webpackのバージョンが4以降になっていたため、設定プロパティが変更されていたため、自動作成されたwebpack.config.jsを以下のようにする。
moduleについてはここを参照。

module.exports = {
    // webpack 4 から追加が必要になった。モードはdevelopment、production、noneが存在する。
    mode: "development",
    // エントリーポイントの設定。
    entry: "./scripts/app.tsx",
    // 出力の設定。
    output: {
        // ★注意 「../」にしておかないとプロジェクトの直下に勝手に「dist」フォルダが作成されて、その中に/Scripts/Dist/bundle.jsが作成されていた。
        filename: "../scripts/bundle.js"
    },
    // webpackで変換・バンドルする前に、loaderと呼ばれるモジュールに処理をさせる場合に設定する。
    module: {
        rules: [
            {
                // loaderの対象拡張子
                test: /\.tsx?$/,
                // 使用するloader。事前にnpm installしておく必要がある。
                use: "ts-loader"
            }
        ]
    }
};

「npm install -s」は「npm install --save」に置き換えて読む。

「-s」のままだと、webpackのコンパイル時にエラーが出る。
npmコマンド覚え書きを参照。

cshtmlの変更

新しく作成されたプロジェクトをそのまま使用することにしたので、「\Views\Home\Index.cshtml」を次のように書き換える。

<div id="content"></div>

さらに、「\Views\Shared_Layout.cshtml」を次のように書き換える。

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <title>Hello React</title>
</head>
<body>
    @RenderBody()
    <script type="text/javascript" src="~/Scripts/Dist/bundle.js"></script>
</body>
</html>

これで、「@RenderBody」に「

」が置き換えられる。ここをtypescript側(react-dom)が置き換えてくれる。

package.jsonをプロジェクトに含める

以下のコマンドを実行すると「package.json」がプロジェクトフォルダ直下(「{projectの名前}\package.json」となる)に作成される。
しかし、プロジェクトに読み込まれていないので、プロジェクトに読み込んでおく。
★「package.config」のことではなく、「package.json」のことを言っている。間違えないように。★

以上。

6
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
10