Heim > Web-Frontend > js-Tutorial > Hauptteil

reagieren, Webpack, domänenübergreifender Proxy mehrseitig

小云云
Freigeben: 2018-02-23 10:25:19
Original
3031 Leute haben es durchsucht

Ich bin neu bei React und verwende Webpack für die technische Entwicklung und Verwaltung. Ich bin auf einige Probleme gestoßen, z. B. auf die mehrseitige Verarbeitung, domänenübergreifende Proxy-Einstellungen und die gleichzeitige Einführung und Verwendung von jQuery. Als ich das Wasser zum ersten Mal probierte, schrieb ich einfach eine Tabellenkomponente.

Befolgen Sie zunächst das Tutorial auf der offiziellen React-Website und erstellen Sie mit der Create-React-App ein React-Projekt.

npm install -g create-react-app
create-react-app my-app

cd my-app
npm start
Nach dem Login kopieren

OK, das erste React-Programm wurde ausgeführt und dann die erste Frage Aufgrund früherer Entwicklungserfahrungen muss die zu entwickelnde Plattform in mehrere Seiten unterteilt werden:

Ändern Sie die Datei package.json im My-App-Verzeichnis (diese Datei bestimmt die Abhängigkeiten, die Sie während der Front-End-Engineering-Entwicklung installieren müssen, einschließlich React, das ebenfalls hier installiert wird)
Angehängt ist meine package.json:

{
  "name": "my-app",
  "version": "1.0.0",
  "description": "pack test",
  "main": "index.js",
  "dependencies": {
    "expose-loader": "^0.7.4",
    "jquery": "^3.2.1",
    "webpack": "^3.10.0",
    "react": "^16.2.0",
    "react-dom": "^16.2.0",
    "react-scripts": "1.1.1"
  },
  "devDependencies": {
    "babel-core": "^6.26.0",
    "babel-loader": "^7.1.2",
    "babel-preset-es2015": "^6.24.1",
    "babel-preset-react": "^6.24.1",
    "clean-webpack-plugin": "^0.1.16",
    "css-loader": "^0.28.7",
    "extract-text-webpack-plugin": "^3.0.0",
    "file-loader": "^1.0.0",
    "glob": "^7.1.2",
    "html-webpack-plugin": "^2.30.1",
    "postcss-loader": "^2.0.6",
    "style-loader": "^0.18.2",
    "url-loader": "^0.5.9",
    "jquery": "^3.2.1",
    "webpack": "^3.10.0",
    "webpack-dev-server": "^2.8.1"
  },
  "scripts": {
    "start": "webpack-dev-server --open",
    "build": "webpack"
  },
  "author": "albert",
  "license": "ISC"
}
Nach dem Login kopieren

Uns Löschen Sie den Ordner „node_modules“ im Originalverzeichnis und führen Sie dann „

npm i
Nach dem Login kopieren

“ in dem Verzeichnis aus, in dem sich „package.json“ befindet. Der Ordner „node_modules“ und die von uns definierten Abhängigkeiten werden automatisch generiert package.json wird installiert.
Sie können in package.json sehen, dass ich die jqeury-Abhängigkeit installieren möchte. Darüber werde ich später sprechen. Eine andere Sache, über die ich sprechen möchte, ist dieser Satz

"scripts": {
    "start": "webpack-dev-server --open",
    "build": "webpack"
  }
Nach dem Login kopieren

Hier geben wir das npm-Befehlsskript an, und die entsprechenden laufenden Befehle sind npm start und npm run build (stellen Sie sicher, dass Sie run hinzufügen, das habe ich nicht getan). Bring es mit, als ich zum ersten Mal laufen lernte, ich konnte nicht auslaufen, das hat mich schon lange verwirrt o(╥﹏╥)o)

In npm start haben wir angegeben dass der Entwicklungsserver von Webpack zum Ausführen verwendet wird und ein Server gestartet wird. Dies macht beim Entwickeln sehr viel Spaß. Nach dem Bearbeiten und Speichern des Codes wird der Front-End-Code automatisch neu erstellt und der Browser wird zur Aktualisierung aufgefordert. Zu diesem Zeitpunkt werden die gepackten Dateien im Speicher generiert, also machen Sie sich nicht die Mühe, im Verzeichnis zu suchen. Sie können sie überhaupt nicht finden >Nach dem Ausführen von npm run build Es wird verwendet, um tatsächlich von Webpack gepackte Dateien zu generieren. Weitere Informationen finden Sie in webpack.config.js. Die durch diesen Befehl generierten Dateien können in dem vom Backend-Server angegebenen statischen Dateiverzeichnis abgelegt werden. Dies sind die Dateien, die zum Online-Gehen verwendet werden. Schauen Sie sich noch einmal meine webpack.config.js an. Diese Datei wird verwendet, um Webpack mitzuteilen, wie das Front-End-Projekt erstellt, verpackt werden soll usw.

Verwandt Empfehlungen:

const webpack = require('webpack');
const glob = require('glob');
const path = require('path');
const HtmlWebpackPlugin = require('html-webpack-plugin');
const ExtractTextPlugin = require('extract-text-webpack-plugin');
const CleanWebpackPlugin = require('clean-webpack-plugin');
 
const webpackConfig = {
  entry: {},
  output:{
    // path:path.resolve(__dirname, './dist/'),
    path:path.resolve('C:/wamp64/www/path/'),
    filename:'[name].[chunkhash:6].js'
  },
  //设置开发者工具的端口号,不设置则默认为8080端口
  devServer: {
    inline: true,
    port: 8181,
    proxy: {
        '/': {
            target: 'http://localhost:80',
            secure: true,
            changeOrigin: true
        }
    }
  },
  module:{
    rules:[
      {
        test:/\.js?$/,
        exclude:/node_modules/,
        loader:'babel-loader',
        query:{
          presets:['es2015','react']
        }
      },
      {
        test: /\.(scss|sass|css)$/, 
        loader: ExtractTextPlugin.extract({fallback: "style-loader", use: "css-loader"})
      },
      {
          test: require.resolve('jquery'),
          use: [{
              loader: 'expose-loader',
              options: 'jQuery'
          },{
              loader: 'expose-loader',
              options: '$'
          }]
      }
       
    ]
  },
  plugins: [
    new ExtractTextPlugin("[name].[chunkhash:6].css"),
    new CleanWebpackPlugin(
      ['path'], 
      {
        root: 'C:/wamp64/www/',              
        verbose: true,              
        dry:   false              
      }
    )
  ],
};
 
// 获取指定路径下的入口文件
function getEntries(globPath) {
  const files = glob.sync(globPath),
   entries = {};
   console.log(files)
  files.forEach(function(filepath) {
    const split = filepath.split('/');
    const name = split[split.length - 2];
    entries[name] = './' + filepath;
  });
  return entries;
}
     
const entries = getEntries('src/**/index.js');
 
Object.keys(entries).forEach(function(name) {
  webpackConfig.entry[name] = entries[name];
  const plugin = new HtmlWebpackPlugin({
    filename: name + '.html',
    template: './public/index.html',
    inject: true,
    chunks: [name]
  });
  webpackConfig.plugins.push(plugin);
})
 
module.exports = webpackConfig;
Nach dem Login kopieren

Freigabe der Grundkonfiguration von Vue+Webpack

Detaillierte Erläuterung von Beispielen für die serverseitige Codeverpackung von Webpack

Webpack, Vue und Node realisieren die gemeinsame Nutzung von Einzelseitencode

Das obige ist der detaillierte Inhalt vonreagieren, Webpack, domänenübergreifender Proxy mehrseitig. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage