DotNet MVC and webpack + Babel + react

Post on 15-Apr-2017

162 views 1 download

transcript

Webpack & Babel SharingBlackie.Tsai

Blackie.tsai@xuenn.com

2016/9/20

Agenda• Modularized Javascript• Webpack Introduction• Babel Introdcution• Visual Studio Setup• Collaborate with .net MVC• Web Optimize

Modularized JavaScript

Modularized JavaScript• Pros• Encapsulation• Decoupling• Organization• No global scope pollution• Security• Re-use

• Cons• More difficult to release• Complex dependency

Thinking in React

Webpack Introduction

Webpack - A Module Bundler• A bundler for javascript and friends. Packs many modules into a

few bundled assets. Code Splitting allows to load parts for the application on demand. Through "loaders," modules can be CommonJs, AMD, ES6 modules, CSS, Images, JSON, Coffeescript, LESS, ... and your custom stuff. https://webpack.github.io• Usage: https://webpack.github.io/docs/tutorials/getting-started/

Features• Performance

• uses async I/O and has multiple caching levels. This makes webpack fast and incredibly fast on incremental compilations.

• Loaders• enables use of loaders to preprocess files. This allows you to bundle any static

resource way beyond JavaScript. You can easily write your own loaders using node.js.  

• Module Format (AMD/CommonJS)• supports both AMD and CommonJS module styles.

• Code Splitting• allows you to split your codebase into multiple chunks. Chunks are loaded

asynchronously at runtime. This reduces the initial loading time.• Optimizations

• can do many optimizations to reduce the output size of your JavaScript by deduplicating frequently used modules, minifying, and giving you full control of what is loaded initially and what is loaded at runtime through code splitting.

Webpack flow

ReactJS+Webpack Structure

Babel Introdcution

Babel - A Tool to convert ES6 to ES5• A Tool to convert ES6 to ES5•  Babel is the most popular tool used to convert ES6 to ES5. It

has various interfaces like a CLI, Node-module and also an online converter. I use the node module for my apps and use theonline version to quickly see the differences.• Why ES6 • 5 JavaScript “Bad” Parts That Are Fixed In ES6• Modularized for React, Babel can convert JSX syntax and strip out type

annotations.

Environment Setup

WebPack Task Runner• https://visualstudiogallery.msdn.microsoft.com/5497fd10-b1ba-474c-8991-1438ae47012a

NodeJS• Node.js® is a JavaScript runtime built on 

Chrome's V8 JavaScript engine. Node.js uses an event-driven, non-blocking I/O model that makes it lightweight and efficient. • Node.js' package ecosystem, npm, is the largest ecosystem of

open source libraries in the world.• https://nodejs.org/dist/v4.5.0/node-v4.5.0-x64.msi• https://nodejs.org/dist/v6.6.0/node-v6.6.0-x64.msi

[NPM]Webpack• https://www.npmjs.com/package/webpack• Project: npm install webpack --save-dev• Global: npm install webpack –g

[NPM]webpack-notifier• https://www.npmjs.com/package/webpack-notifier• npm install --save-dev webpack-notifier

Webpack+Babel+React

Grunt/Gulp for React• Not all browsers are supporting ES6 yet, so we're going to have

to transpile our ES6 code, turning it into ES5. We're also going to have to handle 'JSX', the special Javascript that we can use for React. We also need to play well with existing code.

Webpack for React• Webpack is a bundler. It'll take a bunch of loose Javascript files

and build a single file from the lot

Webpack+Babel for React• Even better, we can configure webpack to run files that match

a certain pattern to go through other 'loaders', which can process the files further.• We can use the Babel transpiler to turn an ES6 file to ES5. We

just need the glue to let Webpack use Babel as a loader. That comes in the form of the Babel Loader:

Babel-loader• This package allows transpiling JavaScript files using Babel and webpack. https://github.com/babel/babel-loader

Dependency• React uses JSX as the XML-like syntax extension over JavaScript

to specify component tree structure, data flow, and event handlers. JSX is processed by Webpack module bundler using specific loaders or convertors.

Collaborate with .net MVC

• Demo Download• Original post : detail of how to setup up front-end in asp.net core and MVC5, sample is clone from AspNetReactSamples• Setup• Install node and NPM• Go to root directory and use NPM to install js dependency• npm install

• Build with install nuget dependency• Run App

Demo

Project Structure

package.json

Layout and View

ES6 to ES5(using Babel)

Advance Webpack

Q & A

11F., No.399, Ruiguang Rd., Neihu Dist., Taipei City 114, Taiwan TEL: +886 2 2798 8529 Fax: +886 2 2798 8531 Website : www.xuenn.com

THANK YOU!