27、初步探索echarts源码

来源:互联网 发布:java中级工程师简历 编辑:程序博客网 时间:2024/09/21 06:32
1、首先发现随笔中凡是和echarts相关的点击率都特别高,于是乎就接着写了echarts因为感觉要转点击率

  首先声明我并不是专业做前端的,所以如果有些说得不对的地方,希望前端大神们出来指正

首先发现echart是由webpack进行打包的,

所以这里先行讲解一下webpack 打包工具

webpack是对于node.js进行包管理的一个工具

(1)首先上网https://nodejs.org/en/下载最新的node.js的msi包管理程序,并进行安装

(2)在打开控制台,输入npm install webpack -g来进行安装npm

          然后继续输入命令npm init npm install webpack --save来讲你的js应用程序的依赖写入 package.json 包

(3)创建如下所示的项目目录

|- dist|- src    |- index.js    |- index.html    |- style.css    |- demo.png(随便找一张图片就可以)|- package.json|- webpack.config.js
(4)接下来,我们在webpack.config.js下加上如下代码
// webpack.config.jsvar path = require('path')var webpack = require('webpack');module.exports = {  entry: ['./src/index'],  output: {    path: path.join(__dirname, 'dist'),    filename: 'bundle.js'  },  plugins: [    new webpack.optimize.UglifyJsPlugin({      compressor: {        warnings: false,      },    })  ],  module: {    loaders: [{      test: /\.css$/,      loaders: ['style', 'css']    },    {        test: /\.(png|jpg)$/,        loaders: [            'file?hash=sha512&digest=hex&name=[hash].[ext]',            'image-webpack?bypassOnDebug&optimizationLevel=7&interlaced=false'        ]    }]  }}

  在开始用webpack之前,要先安装相对应的模块,解析css文件 图片文件以及因为要对文件进行压缩,所以也要用到上文中所说的webpack自身内置的插件,所以也要导入webpack模块

(5)然后在DOM窗口执行

npm install style-loader css-loader image-webpack-loader webpack --save-dev

命令,安装 webpack内置的css-loader的插件来解析css文件,

module.loaders 是最关键的一块配置。它告知 webpack 每一种文件都需要使用什么加载器来处理

module: {        //加载器配置        loaders: [            //.css 文件使用 style-loader 和 css-loader 来处理            { test: /\.css$/, loader: 'style-loader!css-loader' },            //.js 文件使用 jsx-loader 来编译处理            { test: /\.js$/, loader: 'jsx-loader?harmony' },            //.scss 文件使用 style-loader、css-loader 和 sass-loader 来编译处理            { test: /\.scss$/, loader: 'style!css!sass?sourceMap'},            //图片文件使用 url-loader 来处理,小于8kb的直接转为base64            { test: /\.(png|jpg)$/, loader: 'url-loader?limit=8192'}        ]    }


//最后是 resolve 配置,这块很好理解,直接写注释了
resolve: {        //查找module的话从这里开始查找        root: 'E:/github/flux-example/src', //绝对路径        //自动扩展文件后缀名,意味着我们require模块可以省略不写后缀名        extensions: ['', '.js', '.json', '.scss'],        //模块别名定义,方便后续直接引用别名,无须多写长长的地址        alias: {            AppStore : 'js/stores/AppStores.js',//后续直接 require('AppStore') 即可            ActionType : 'js/actions/ActionType.js',            AppAction : 'js/actions/AppAction.js'        }    }

 

(6)执行完成后再执行webpack命令,看到如下内容说明打包成功

(7)然后再在入口文件index.js中加入命令

require('./style.css');这样就可以使用style.css中的样式表了

(8)
webpack 的执行也很简单,直接执行

webpack --display-error-details



 1 (function webpackUniversalModuleDefinition(root, factory) {//通过这里可以看出Echarts是通过webpack进行打包的,webpack是近期最火的一款模块加载器兼打包工具
                                    //,它能把各种资源,例如JS(含JSX)、coffee、样式(含less/sass)、图片等都作为模块来使用和处理。
2 if(typeof exports === 'object' && typeof module === 'object') 3 module.exports = factory();               4 else if(typeof define === 'function' && define.amd) 5 define([], factory); 6 else if(typeof exports === 'object') 7 exports["echarts"] = factory(); 8 else 9 root["echarts"] = factory();10 })(this, function() {11 return /******/ (function(modules) { // webpackBootstrap12 /******/ // The module cache13 /******/ var installedModules = {};14 15 /******/ // The require function16 /******/ function __webpack_require__(moduleId) {17 18 /******/ // Check if module is in cache19 /******/ if(installedModules[moduleId])20 /******/ return installedModules[moduleId].exports;21 22 /******/ // Create a new module (and put it into the cache)23 /******/ var module = installedModules[moduleId] = {24 /******/ exports: {},25 /******/ id: moduleId,26 /******/ loaded: false27 /******/ };28 29 /******/ // Execute the module function30 /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);31 32 /******/ // Flag the module as loaded33 /******/ module.loaded = true;34 35 /******/ // Return the exports of the module36 /******/ return module.exports;37 /******/ }38 39 40 /******/ // expose the modules object (__webpack_modules__)41 /******/ __webpack_require__.m = modules;42 43 /******/ // expose the module cache44 /******/ __webpack_require__.c = installedModules;45 46 /******/ // __webpack_public_path__47 /******/ __webpack_require__.p = "";48 49 /******/ // Load entry module and return exports50 /******/ return __webpack_require__(0);51 /******/ })

 

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 护照在大使馆办签证期间出国怎么办 法院两次判决不准离婚我该怎么办? 法院判决不准离婚妻子不回来怎么办 被告人在不调解的情况下怎么办 知道弟兄的孩子是别人的怎么办? 办居住证的回执单丢了怎么办 领取居住证的回执单丢了怎么办 北京居住证网上申报信息填错怎么办 买家退回来的货有问题怎么办 居转户过程中生的小孩户口怎么办 人才引进申请上海户口被拒怎么办 网络购高铁票身份证没有验证怎么办 高速遇到很浓的团雾怎么办 对于大巴不按座位坐的人该怎么办 火车上遇到占座不让的人怎么办 滁州婴儿打疫苗的绿本子怎么办 检查四维说宝宝嘴巴显示不清怎么办 携程订票付款成功一直没出票怎么办 手机微信支付密码忘了怎么办 存入卡里的钱却说余额不足怎么办 买高铁票身份证未通过审核怎么办 网上订演出票不配送了怎么办 百度糯米订的演出票不配送了怎么办 高铁误点改签后的车次没票了怎么办 高铁晚点没赶上下班车怎么办 上班期间单位没给交养老保险怎么办 一键启动车钥匙遥控失灵怎么办 已经订购的火车票误了火车怎么办 飞机去程取消分开买的返程怎么办 订完学生票发现使用次数过了怎么办 坐火车买学生票没带学生证怎么办 买了学生票学生证磁条没了怎么办 买了动车学生票没带学生证怎么办 身份证没磁了怎么办能买火车票 格力空调保修单丢了怎么办 格力空调保修期内坏了怎么办 国际联程航班第一程延误怎么办 大麦网演唱会的票售罄了怎么办 国内转机航班第一班延误了怎么办 联程机票下一程航班被取消怎么办 联程机票第一班航班取消怎么办