從0開始疫情3D地球 - 3D疫情地球VDEarth - 2 - 前端代碼構建

基於Threejs的3D疫情地球,環境採用上篇博客裏的前端準備環境。css

首先建立前端代碼文件夾VDEarth html

mkdir VDEarth && cd VDEarch

 

安裝組件前端

npm安裝應用到的組件node

安裝webpack組件webpack

npm install -D webpack 

安裝webpack-cli組件,webpack組件4.0+須要web

npm instlal -D webpack-cli   

 

安裝threejs組件npm

npm install three    

安裝lodash組件json

npm install lodash

 

代碼結構babel

webpack搭建前端代碼框架框架

npm init -y

分離webpack配置,分離爲webpack.base.js,webpack.dev.js,webpack.prod.js

搭建好的代碼結構:

沒什麼好說的,搭建能夠參考webpack官網

webpack.base.js 

配置入口文件爲src下index.js文件

輸出配置爲類庫方式,另外引入一些經常使用插件和loader

 1 const path = require('path');
 2 let HtmlWebpackPlugin = require('html-webpack-plugin');
 3 const { CleanWebpackPlugin } = require('clean-webpack-plugin');
 4 const MiniCssExtractPlugin = require('mini-css-extract-plugin');
 5 const OptimizeCssAssetsPlugin = require('optimize-css-assets-webpack-plugin');
 6 const copyWebpackPlugin = require('copy-webpack-plugin');
 7 module.exports = {
 8   entry: './src/index.js',
 9   output: {
10     filename: 'VDEarth.js',
11     path: path.resolve(__dirname, 'dist'),
12     library: 'VDEarth',
13     libraryTarget: 'umd',
14     umdNamedDefine: true,
15   },
16   plugins: [
17     new HtmlWebpackPlugin({
18       template: './src/public/index.html',
19     }),
20     new CleanWebpackPlugin(),
21     new MiniCssExtractPlugin(),
22     new OptimizeCssAssetsPlugin(),
23     new copyWebpackPlugin([
24       {
25         from: __dirname + '/src/fonts', //打包的靜態資源目錄地址
26         to: './fonts', //打包到dist下面的public
27       },
28     ]),
38   ],
39   module: {
40     rules: [
41       {
42         test: /\.(woff|woff2|eot|ttf|otf|json)$/,
43         use: {
44           loader: 'file-loader',
45           options: {
46             name: 'fonts/[name].[ext]',
47             publicPath: './',
48           },
49         },
50       },
51       {
52         test: /\.(svg|gif|png|jpg)$/,
53         use: {
54           loader: 'file-loader',
55           options: {
56             name: 'images/[name].[ext]',
57             publicPath: './',
58           },
59         },
60       },
61       {
62         test: /\.(css|less)$/,
63         use: [MiniCssExtractPlugin.loader, 'css-loader', 'less-loader'],
64       },
72       {
73         test: /\.(jsx|js)$/,
74         exclude: /node_modules/,
75         loader: 'babel-loader',
76       },
77     ],
78   },
79   externals: {
80     lodash: {
81       commonjs: 'lodash',
82       commonjs2: 'lodash',
83       amd: 'lodash',
84       root: '_',
85     },
86   },
87 };

package.json

修改package.json,這裏刪除scripts屬性下的配置,修改成

"build": "webpack --config webpack.prod.js",

"watch": "webpack --watch",

"start": "webpack-dev-server --config webpack.dev.js"

build命令進行項目的發佈

start命令使用了webpack-dev-server,藉助這個能夠進行熱啓動,代碼調試

watch命令能夠不用,只是檢測改動

{
  "name": "vdearth",
  "version": "1.0.0",
  "description": "",
  "private": true,
  "dependencies": {
    "lodash": "^4.17.15",
    "three": "^0.115.0"
  },
  "devDependencies": {
    "@babel/cli": "^7.8.4",
    "@babel/core": "^7.9.0",
    "@babel/preset-env": "^7.9.0",
    "babel-loader": "^8.1.0",
    "clean-webpack-plugin": "^3.0.0",
    "copy-webpack-plugin": "^5.1.1",
    "css-loader": "^3.5.2",
    "file-loader": "^6.0.0",
    "html-webpack-plugin": "^4.0.3",
    "json-loader": "^0.5.7",
    "less": "^3.11.1",
    "less-loader": "^5.0.0",
    "mini-css-extract-plugin": "^0.9.0",
    "optimize-css-assets-webpack-plugin": "^5.0.3",
    "style-loader": "^1.1.3",
    "webpack": "^4.42.1",
    "webpack-cli": "^3.3.11",
    "webpack-dev-server": "^3.10.3",
    "webpack-merge": "^4.2.2"
  },
  "scripts": {
    "build": "webpack --config webpack.prod.js",
    "watch": "webpack --watch",
    "start": "webpack-dev-server --config webpack.dev.js"
  },
  "keywords": [],
  "author": "",
  "license": "ISC"
}

分層文件

在src文件內分別建立fonts,image,public,style文件夾,存放3D可視化的分類素材

 

 新增VDEarth.js 做爲主要地球邏輯的實現類,indexjs做爲組件入口文件

 主要功能js

首先要支持3D地球的可視化的顯示,須要用到threejs的幾個對象,如mesh,material,geometry,依次建立幾個js,mode.js,material.js,geometry.js

支持地球上的標記,事件,動畫,數據獲取,依次建立marker.js ,eventListener.js, animate.js,socketjs

建立組件的一些工具方法,建立utils.js

加上上篇建立的入口index.js ,vdEarth.js主文件,目錄結構以下

至此,簡單的前端代碼框架就搭建完成了,npm run start 就能夠運行起來

 

 

相關連接

從0開始疫情3D地球 - 3D疫情地球VDEarth - 1- 引言 

從0開始疫情3D地球 - 3D疫情地球VDEarth - 2 - 前端代碼構建 

從0開始疫情3D地球 - 3D疫情地球VDEarth - 3 - 3D地球組件實現(1) 

從0開始疫情3D地球 - 3D疫情地球VDEarth - 4 - 3D地球組件實現(2) 

從0開始疫情3D地球 - 3D疫情地球VDEarth - 5 - 疫情數據爬蟲 

從0開始疫情3D地球 - 3D疫情地球VDEarth - 6 - 數據推送  

相關文章
相關標籤/搜索