+ All Categories
Home > Software > DotNet MVC and webpack + Babel + react

DotNet MVC and webpack + Babel + react

Date post: 15-Apr-2017
Category:
Upload: chen-tien-tsai
View: 162 times
Download: 1 times
Share this document with a friend
35
Webpack & Babel Sharing Blackie.Tsai [email protected] 2016/9/20
Transcript
Page 1: DotNet MVC and webpack + Babel + react

Webpack & Babel SharingBlackie.Tsai

[email protected]

2016/9/20

Page 2: DotNet MVC and webpack + Babel + react

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

Page 3: DotNet MVC and webpack + Babel + react

Modularized JavaScript

Page 4: DotNet MVC and webpack + Babel + react

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

• Cons• More difficult to release• Complex dependency

Page 5: DotNet MVC and webpack + Babel + react

Thinking in React

Page 6: DotNet MVC and webpack + Babel + react

Webpack Introduction

Page 7: DotNet MVC and webpack + Babel + react

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/

Page 8: DotNet MVC and webpack + Babel + react

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.

Page 9: DotNet MVC and webpack + Babel + react

Webpack flow

Page 10: DotNet MVC and webpack + Babel + react

ReactJS+Webpack Structure

Page 11: DotNet MVC and webpack + Babel + react

Babel Introdcution

Page 12: DotNet MVC and webpack + Babel + react

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.

Page 13: DotNet MVC and webpack + Babel + react

Environment Setup

Page 15: DotNet MVC and webpack + Babel + react

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

Page 17: DotNet MVC and webpack + Babel + react

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

Page 18: DotNet MVC and webpack + Babel + react

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

Page 19: DotNet MVC and webpack + Babel + react

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

Page 20: DotNet MVC and webpack + Babel + react

Webpack+Babel+React

Page 21: DotNet MVC and 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.

Page 22: DotNet MVC and webpack + Babel + react

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

and build a single file from the lot

Page 23: DotNet MVC and webpack + Babel + react

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:

Page 24: DotNet MVC and webpack + Babel + react

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

Page 25: DotNet MVC and webpack + Babel + react

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.

Page 26: DotNet MVC and webpack + Babel + react

Collaborate with .net MVC

Page 27: DotNet MVC and webpack + Babel + react

• 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

Page 28: DotNet MVC and webpack + Babel + react

Project Structure

Page 29: DotNet MVC and webpack + Babel + react

package.json

Page 30: DotNet MVC and webpack + Babel + react

Layout and View

Page 31: DotNet MVC and webpack + Babel + react

ES6 to ES5(using Babel)

Page 32: DotNet MVC and webpack + Babel + react

Advance Webpack

Page 34: DotNet MVC and webpack + Babel + react

Q & A

Page 35: DotNet MVC and webpack + Babel + react

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!


Recommended