Using React, Typescript, and Webpack with Visual Studio 2015

I work with Microsoft technologies in my day job. I do a lot of ASP.NET MVC related stuff,and I wanted to useReactwith myASP.NET MVCapplication,but I wanted to have a nice development experience. The same I have when using text editors such as Sublime Text and other tools for Node.js.

I also wanted all that inside Visual Studio 2015,which is what I use at work. Not because I have to live inside VS,but because I might have a teammate that want to do so. So here’s a description of what I’ve achieved so far using:

  • Visual Studio 2015 Community Edition (the version I have at home,at work I use the Professional Edition)
  • React
  • Webpack
  • Typescript
  • TSD

First things first,I wanted it to work from Visual Studio because not everybody using Visual Studio is comfortable or even likes to use a console. But in any case,we have to haveNode.jsinstalled. That’s an easy thing to do so that I won’t bother with the details of it.

Next,I have an ASP.NET MVC 5 project,using .NET 4.5. I kNow,ASP.NET 5 and MVC 6 are just around the corner,but that’s not my reality yet and I bet it’s not the reality of many people.

So let’s get into it.

We’re going to install one extension that is calledNPM Scripts Task Runner. This extension will allow us to run an NPM task directly from Visual Studio.

Node dependencies

With that in place,we have to install the node extensions we’ll be using. First I’ll add a package.json file. When adding a new item to the web project,Visual Studio has a template for adding a package.json file,we just have to search for npm and add a new file.

First,I’m going to install react and react-dom. I’ll add a dependencies section to the package.json file and add both packages. Another nice thing of VS2015 is that it has intellisense for adding node packages. And once the file is saved the packages are automatically installed.

With that installed,I’m going to install the dependencies needed to useTypeScriptwithWebpack.

Here’s the result of my package.json file:

{
  "version": "1.0.0","name": "ASP.NET","private": true,"dependencies": {
    "react": "0.14.3","react-dom": "0.14.3"
  },"devDependencies": {
    "Webpack": "1.12.9","ts-loader": "0.7.2","typescript": "1.7.3"
  }
}

Webpack

Time to configure Webpack. If you don’t kNow Webpack,here’s what it will do for us: it will bundle all of our JavaScript or TypeScript files in a single file,and will transpile the JSX and TypeScript Syntax into JavaScript that the browser will understand.

Note:Webpack does a lot more than just that,but this post is not about Webpack.

For that,we need a file called Webpack.config.js in the root of the project. Here’s mine:

module.exports = {
    entry: './Scripts/app/App.tsx',output: {
        filename: 'Scripts/app/bundle.js'
    },resolve: {
        extensions: ['','.Webpack.js','.web.js','.ts','.js','.tsx']
      },module: {
        loaders: [
            {
                test: /\.tsx?$/,exclude: /(node_modules|bower_components)/,loader: 'ts-loader'
            }
        ]
    }
}

Here’s what this file does:

  • entry: it is,of course,the entry point of the application,in my case,the App.tsx file. If App.tsx depends on other files usingimportstatements,Webpack will bundle those files. I used a string here because I only had one file as an entry point. If you have more than one,you can use an array.
  • output: the path and name of the file that will be generated. That’s the file we have to reference in the HTML file.
  • resolve: by default Webpack does no load .ts and .tsx files,we have to tell it to do so.
  • module: here’s where we set up the loader responsible for transpiling our code. In this case I’m usingts-loaderto transpile from TypeScript to JavaScript.

Now,all that is left to do is to find a way to transpile automatically the tsx files and refresh the page in the browser.

Watch and recompile files

Running the command webpack -w from a console Webpack will launch compile the files and bundle them. The -w option stands for watch meaning that Webpack will watch for changes in my files recompile and rebundle them.

So all I have to do is launch this command from Visual Studio. The way I choose to do that is via an npm command. I’m going to add a script command in the package.json file and launch it from VS2015.

Here’s the package.json modified,notice the scripts section:

{
  "version": "1.0.0","scripts": {
    "webpack" : "webpack -w"
  },"typescript": "1.7.3"
  }
}

I added a script called webpack that will run the command webpack -w.

Now,if I right-click the package.json file there will be an option called Task Runner,click that and you’ll see the Task Runner Explorer window.

From the Task Runner Explorer window,you can right-click the webpack task and click run.

That will start Webpack and because of the -w option,the tsx files will be automatically compiled whenever they’re changed.

TypeScript and typings

Because TypeScript is a typed language,it needs the types of the packages we’re using. One way to add the typings for those packages is through nuget. Personally,I prefer to another tool to do that which isTSD.

One would usetsdvia the console,but because my goal here is not to leave Visual Studio,I’ll be using another VS extension to add the typings using tsd.

The extension I’m going to install isPackage Installer.

With that in place,in the Solution Explorer window,I can right-click the project name and click on Quick Install Package.

Now,I just have to install the React typings. I’ll start by selecting TSD on the first option,and then I’ll type react-global and I’ll leave latest-version as the version I want.

The first time we do that a typings folder and a tsd.json file will be created. We have to include them in the project as this is not done automatically.

That’s all there is to it regarding the typings for TypeScript.

Note:I don’t kNow if there’s a bug on VS2015,but I had to close the project and reopen it for the changes to take effect.

Refreshing the page

Visual Studio does not refresh the page automatically when a JavaScript file changes. It only does refreshes portions of the page through the use of browserSync when some CSS or styles are changed.

In any case,Visual Studio does support the commandCtrl + Alt + Enterthat will refresh the page,in all browser’s that are connected to Visual Studio through browserSync.

And then the cycle is complete. We can Now make changes to the JavaScript/TypeScript code,and the code will be recompiled,and we can refresh the page without ever taking our hands off the keyboard.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


react 中的高阶组件主要是对于 hooks 之前的类组件来说的,如果组件之中有复用的代码,需要重新创建一个父类,父类中存储公共代码,返回子类,同时把公用属性...
我们上一节了解了组件的更新机制,但是只是停留在表层上,例如我们的 setState 函数式同步执行的,我们的事件处理直接绑定在了 dom 元素上,这些都跟 re...
我们上一节了解了 react 的虚拟 dom 的格式,如何把虚拟 dom 转为真实 dom 进行挂载。其实函数是组件和类组件也是在这个基础上包裹了一层,一个是调...
react 本身提供了克隆组件的方法,但是平时开发中可能很少使用,可能是不了解。我公司的项目就没有使用,但是在很多三方库中都有使用。本小节我们来学习下如果使用该...
mobx 是一个简单可扩展的状态管理库,中文官网链接。小编在接触 react 就一直使用 mobx 库,上手简单不复杂。
我们在平常的开发中不可避免的会有很多列表渲染逻辑,在 pc 端可以使用分页进行渲染数限制,在移动端可以使用下拉加载更多。但是对于大量的列表渲染,特别像有实时数据...
本小节开始前,我们先答复下一个同学的问题。上一小节发布后,有小伙伴后台来信问到:‘小编你只讲了类组件中怎么使用 ref,那在函数式组件中怎么使用呢?’。确实我们...
上一小节我们了解了固定高度的滚动列表实现,因为是固定高度所以容器总高度和每个元素的 size、offset 很容易得到,这种场景也适合我们常见的大部分场景,例如...
上一小节我们处理了 setState 的批量更新机制,但是我们有两个遗漏点,一个是源码中的 setState 可以传入函数,同时 setState 可以传入第二...
我们知道 react 进行页面渲染或者刷新的时候,会从根节点到子节点全部执行一遍,即使子组件中没有状态的改变,也会执行。这就造成了性能不必要的浪费。之前我们了解...
在平时工作中的某些场景下,你可能想在整个组件树中传递数据,但却不想手动地通过 props 属性在每一层传递属性,contextAPI 应用而生。
楼主最近入职新单位了,恰好新单位使用的技术栈是 react,因为之前一直进行的是 vue2/vue3 和小程序开发,对于这些技术栈实现机制也有一些了解,最少面试...
我们上一节了了解了函数式组件和类组件的处理方式,本质就是处理基于 babel 处理后的 type 类型,最后还是要处理虚拟 dom。本小节我们学习下组件的更新机...
前面几节我们学习了解了 react 的渲染机制和生命周期,本节我们正式进入基本面试必考的核心地带 -- diff 算法,了解如何优化和复用 dom 操作的,还有...
我们在之前已经学习过 react 生命周期,但是在 16 版本中 will 类的生命周期进行了废除,虽然依然可以用,但是需要加上 UNSAFE 开头,表示是不安...
上一小节我们学习了 react 中类组件的优化方式,对于 hooks 为主流的函数式编程,react 也提供了优化方式 memo 方法,本小节我们来了解下它的用...
开源不易,感谢你的支持,❤ star me if you like concent ^_^
hel-micro,模块联邦sdk化,免构建、热更新、工具链无关的微模块方案 ,欢迎关注与了解
本文主题围绕concent的setup和react的五把钩子来展开,既然提到了setup就离不开composition api这个关键词,准确的说setup是由...
ReactsetState的执行是异步还是同步官方文档是这么说的setState()doesnotalwaysimmediatelyupdatethecomponent.Itmaybatchordefertheupdateuntillater.Thismakesreadingthis.staterightaftercallingsetState()apotentialpitfall.Instead,usecom