webpack:两小时极速入门
目录
webpack
webpack简介
webpack起步
webpack:管理静态资源
webpack:加载CSS资源
webpack:加载图片资源
webpack:加载字体资源
webpack:加载各种文件
webpack资源管理的优势
webpack:管理输出
webpack:自动构建dist目录
webpack:自动清理dist目录
webpack:打包进度条
webpack开发配置
webpack:错误追踪
webpack:启用观察者模式
webpack:webpack-dev-server本地服务器
webpack
Webpack官网号称“打包所有的样式、资源、脚本、图片”,接下来将基于Webpack搭建前端项目模块化开发的基本骨架。
webpack简介
webpack是一个现代JavaScript应用程序的静态模块打包器(module bundler),主要用于编译JavaScript模块,基于webpack的cli脚手架或者API可实现前端应用的模块化开发。
当webapck处理应用程序时,它会递归地构建一个依赖关系图(dependency graph),其中包含应用程序需要的每个模块,然后将这些模块打包成一个或者多个bundle。
webpack起步
(1)初始化项目。创建webpack项目,需要使用npm init命令初始化一个项目,然后使用如下命令在本地安装webpack依赖、webpack-cli脚手架,其中:后者webpack-cli脚手架工具用于在命令行中运行webpack。
npm init -y
npm install webpack webpack-cli --save-dev
(2)创建入口文件。创建index.html文件、src/index.js,其中:后者src目录下的index.js我们称之为“入口文件(entry point)”,index.js通常需要在webpack.config.js配置文件中指定,并将其作为webpack应用构建的入口脚本文件。
(3)配置文件编写。编写一个最简单的配置文件如下,
/*** webpack项目的配置文件*/
const path = require("path");module.exports = {//提供 mode 配置选项,告知 webpack 使用相应模式的内置优化-[也可以从cli中传递模式参数]mode:"production",//入口文件配置entry:"./src/index.js",//出口文件output:{filename: '[name].js',//占位符[name],保证文件名唯一path: path.resolve(__dirname,"dist"),//指定输出文件保存在根目录下的dist文件夹中}
};
(4)配置package.json,添加npm命令,用于替换npx webpack的运行方式。
(5)安装lodash.js第三方依赖模块(该模块提供了一系列用于处理数组、字符串、数学运算相关的JavaScript 实用工具库),并编写入口文件src/index.js、入口页面index.html。
#安装lodash第三方依赖
npm install --save lodash
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Cesium-Webpack</title><!-- <script src="https://unpkg.com/lodash@4.16.6"></script> -->
</head>
<body><script src="./src/index.js"></script>
</body>
</html>
import _ from 'lodash';//使用webpack管理JavaScript资源
/*** 创建一个子组件*/
function component(){const element = document.createElement("div");element.innerHTML = _.join(["hello","webpack"],' ');return element;
}document.body.appendChild(component());
(7)执行如下命令,打包资源,可以看到项目根目录下出现了一个main.js——JavaScript脚本文件,这文件就是之前我们编写好的代码和依赖库中的脚本合并压缩之后的、可以在浏览器端直接运行的JS脚本文件。
npm run build
(8)注意到:webpack默认打包时,不会生成index.html主页面,那么,此处我们可以手动提供一个,并使用script标签引入main.js脚本库。
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Cesium-Webpack</title>
</head>
<body><script src="main.js"></script>
</body>
</html>
(9) 此时,双击打开dist输出目录下的index.html文件,就可以看到显示效果。
webpack:管理静态资源
那么,webpack如何管理资源,例如图片、字体呢?以下部分进行详细介绍。
webpack通过loader引入除了JavaScript以外任何类型的文件,即:Webpack除了用于管理相互之间具有依赖关系的JavaSript模块,同样可以用来构建网站或者web应用程序中的所有非JavaScript内容。
webpack:加载CSS资源
我们尝试编写一个global.css,来执行全局样式——DOM元素边界的清零操作。注意:webpack可以将所有资源视为一个模块化应用的子模块,也就是说,我们将使用import命令导入一个global.css全局样式文件。
(1)安装style-loader和css-loader,命令如下,
npm install --save-dev style-loader css-loader
(2)通过modules属性,配置loader,修改webpack.config.js文件的内容如下,
/*** webpack项目的配置文件*/
const path = require("path");module.exports = {//提供 mode 配置选项,告知 webpack 使用相应模式的内置优化-[也可以从cli中传递模式参数]mode:"production",//入口文件配置entry:"./src/index.js",//出口文件output:{filename: '[name].js',//占位符[name],保证文件名唯一path: path.resolve(__dirname,"dist"),//指定输出文件保存在根目录下的dist文件夹中},//模块配置module:{rules:[{test:/\.css$/,//正则表达式-匹配css样式文件use:['style-loader','css-loader'],//配置样式加载器}]}
};
(3)尝试通过如下命令,导入src/global.css样式文件。
import './global.css' //导入全局样式文件
(4)运行构建/打包命令:npm run build,重新打开dist文件夹下的index.html文件,查看网页样式。如下图所示,使用import命令导入的样式文件已经生效了。
webpack:加载图片资源
现在,我们在src目录下新建一个assets子文件夹,用来存放一张照片,并尝试在webpack项目中,使用import命令引入,并通过原生JavaScript编程,将其插入index.html页面中展示。
(1)安装file-loader。安装命令如下,
npm install --save-dev file-loader
(2)修改webpack.config.js配置文件内容,如下所示,
/*** webpack项目的配置文件*/
const path = require("path");module.exports = {//提供 mode 配置选项,告知 webpack 使用相应模式的内置优化-[也可以从cli中传递模式参数]mode:"production",//入口文件配置entry:"./src/index.js",//出口文件output:{filename: '[name].js',//占位符[name],保证文件名唯一path: path.resolve(__dirname,"dist"),//指定输出文件保存在根目录下的dist文件夹中},//模块配置module:{rules:[//css加载器{test:/\.css$/,//正则表达式-匹配css样式文件use:['style-loader','css-loader'],//配置样式加载器},//图片加载器{test:/\.(png|svg|jpg|gif)$/,//正则表达式-匹配图片文件use:['file-loader'],//配置图片文件加载器}]}
};
(3)修改index.js入口文件的代码如下,并使用import命令导入image图片资源,将其添加到index.html页面中,代码如下,
import _ from 'lodash' //使用webpack管理JavaScript资源
import './global.css' //导入全局样式文件
import img_hg from './assets/xjqxz.jpg' //导入图片资源
/*** 创建一个子组件*/
function component() {const documentFrags = document.createDocumentFragment();//创建DOM元素const div = document.createElement('div')div.innerHTML = _.join(['hello', 'webpack'], ' ')//创建img元素const image = document.createElement("img");image.src = img_hg;//添加到文档片段容器中documentFrags.appendChild(div);documentFrags.appendChild(image);//返回文档片段return documentFrags;
}document.body.appendChild(component())
(4)重新执行打包命令:npm run build,可以看到dist目录下出现了刚才使用的图片文件,然后打开dist/index.html页面,查看执行效果如下,图片资源引入成功。
webpack:加载字体资源
现在,我们尝试引入一种电子表和其它样式的字体资源。在webapck项目中,仍然可以使用file-laoder文件加载器在加载字体资源(实际上,file-loader加载器可以用于加载任何类型的文件)。
(1)首先,我们需要更新webpack.config.js配置文件,将file-loader加载器应用于字体资源。
/*** webpack项目的配置文件*/
const path = require("path");module.exports = {//提供 mode 配置选项,告知 webpack 使用相应模式的内置优化-[也可以从cli中传递模式参数]mode:"production",//入口文件配置entry:"./src/index.js",//出口文件output:{filename: '[name].js',//占位符[name],保证文件名唯一path: path.resolve(__dirname,"dist"),//指定输出文件保存在根目录下的dist文件夹中},//模块配置module:{rules:[//css加载器{test:/\.css$/,//正则表达式-匹配css样式文件use:['style-loader','css-loader'],//配置样式加载器},//图片加载器{test:/\.(png|svg|jpg|gif)$/,//正则表达式-匹配图片文件use:['file-loader'],//配置图片文件加载器},//字体资源加载器{test:/\.(woff|woff2|eot|ttf|otf)$/,//正则表达式-匹配字体资源use:['file-loader'],//配置字体资源加载器}]}
};
(2)其次,我们在src/assets文件夹下新建一个fonts子文件夹,用来存放字体资源。
(3)接下来,我们尝试在global.css全局样式文件中,使用@font-face来注册字体,使用这两种字体。
/* 注册字体 */
/* 电子表字体 */
@font-face {font-family: DS_DIGIT;src: url('./assets/fonts/DS-DIGIT.TTF');font-weight:400 ;font-style: normal;
}
/* 站酷高端黑字体 */
@font-face {font-family: ZK_BLACK;src: url('./assets/fonts/zk_black.woff') format('woff'),url('./assets/fonts/zk_black.woff2') format('woff2');font-weight:400 ;font-style: normal;
}*,html,body{margin: 0;padding: 0;box-sizing: border-box;background-color: skyblue;
}
(4)重新打包,打开dist文件夹下的index.html,可以看到,两种字体文件引入成功。
webpack:加载各种文件
除了图片和字体资源,webpack还可以用于加载各种数据文件,例如:JSON 文件,CSV、TSV 和 XML。类似于NodeJS,webpack对JSON格式天然支持,可以直接使用import命令导入JSON文件,默认运行正常。但是,要导入CSV、TSV和XML文件,就要使用csv-loader和xml-loader,以下其进行配置。
(1)使用如下命令,安装对应的加载器,
npm install --save-dev csv-loader xml-loader
(2)修改webpack.config.js配置文件,为CSV、TSV、XML文件提供对应的加载器。
/*** webpack项目的配置文件*/
const path = require("path");module.exports = {//提供 mode 配置选项,告知 webpack 使用相应模式的内置优化-[也可以从cli中传递模式参数]mode:"production",//入口文件配置entry:"./src/index.js",//出口文件output:{filename: '[name].js',//占位符[name],保证文件名唯一path: path.resolve(__dirname,"dist"),//指定输出文件保存在根目录下的dist文件夹中},//模块配置module:{rules:[//css加载器{test:/\.css$/,//正则表达式-匹配css样式文件use:['style-loader','css-loader'],//配置样式加载器},//图片加载器{test:/\.(png|svg|jpg|gif)$/,//正则表达式-匹配图片文件use:['file-loader'],//配置图片文件加载器},//字体资源加载器{test:/\.(woff|woff2|eot|ttf|otf)$/,//正则表达式-匹配字体资源use:['file-loader'],//配置字体资源加载器},//配置CSV、TSV加载器{test:/\.(csv|tsv)$/,use:"csv-loader",},//配置XML加载器{test:/\.xml$/,use:"xml-loader",}]}
};
(3)然后我们在src/assets文件夹下创建data子文件夹,并放入几个文件,包括:json、csv、xml格式的,
(4)尝试在index.js入口文件中引入三个文件,并打印内容。
import grid_json from './assets/data/grid.json' //导入json文件
import result_csv from './assets/data/result.csv' //导入csv文件
import test_xml from './assets/data/test.xml' //导入xml文件
console.log(grid_json)
console.log(result_csv)
console.log(test_xml)
(5)重新打包,并打开dist/index.hml文件,查看控制台的内容。可发现:经过webapck的处理,导入的数据资源,已经被转换为JavaScript的Object对象或者Array对象数组。
webpack资源管理的优势
以上我们的项目结构是:将全部的静态资源放在src/assets文件夹中,尽管在前端开发中这是一种经常性的做法,但是,webpakc的这种模块化资源的管理能力,可以使我们将模块和各自的资源文件放在一起,从而减少维护/开发压力。
webpack:管理输出
webpack:自动构建dist目录
到目前为止,我们的dist目录下的index.html文件,仍然是手动编写,然后拷贝过去的。这种做法未免有些low,并且,如果是真正的大型项目开发,随着应用程序增长,并且一旦开始对文件名使用哈希(hash)]并输出多个 bundle,手动地对 index.html
文件进行管理,一切就会变得困难起来。
接下来,我们尝试在webpack中配置插件,使dist目录下的index.html文件可以自动生成。
(1)先清空dist目录中的所有文件;
(2)安装HtmlWebpackPlugin插件,该插件简化了HTML文件的创建,可以为webpack包提供服务,这对于上述情况(经常性发生变化的、包含hash哈希字符的webpack资源十分有用),因为这个插件可以自动为我们生成一个HTML文件。
npm install --save-dev html-webpack-plugin
(3)修改webpack.congfig.js配置文件的内容,使得HtmlWebpackPlugin插件生效。
/*** webpack项目的配置文件*/
const HtmlWebpackPlugin = require('html-webpack-plugin');
const path = require("path");module.exports = {//提供 mode 配置选项,告知 webpack 使用相应模式的内置优化-[也可以从cli中传递模式参数]mode:"production",//入口文件配置entry:"./src/index.js",//出口文件output:{filename: '[name].js',//占位符[name],保证文件名唯一path: path.resolve(__dirname,"dist"),//指定输出文件保存在根目录下的dist文件夹中},//模块配置module:{rules:[//css加载器{test:/\.css$/,//正则表达式-匹配css样式文件use:['style-loader','css-loader'],//配置样式加载器},//图片加载器{test:/\.(png|svg|jpg|gif)$/,//正则表达式-匹配图片文件use:['file-loader'],//配置图片文件加载器},//字体资源加载器{test:/\.(woff|woff2|eot|ttf|otf)$/,//正则表达式-匹配字体资源use:['file-loader'],//配置字体资源加载器},//配置CSV、TSV加载器{test:/\.(csv|tsv)$/,use:"csv-loader",},//配置XML加载器{test:/\.xml$/,use:"xml-loader",}]},//插件配置plugins:[new HtmlWebpackPlugin(),]
};
(4)重新运行打包命令:npm run build,dist输出目录内容和index.html自动构建的内容如下,
<!doctype html>
<html><head><meta charset="utf-8"><title>Webpack App</title><meta name="viewport" content="width=device-width,initial-scale=1"><script defer="defer" src="main.js"></script>
</head><body></body></html>
webpack:自动清理dist目录
通常地,按照以上的方式去打包项目,生成在dist目录中的文件只会执行覆盖操作,而不会执行清理操作,时间一长,这对于项目的打包发布是十分不友好的。
因此,可以使用webpack官网推荐的clean-webpack-plugin管理插件,它会自动帮我们在每次执行npx webapck或者npm run build命令之前,先去清理dist目录,然后再生成新的内容。
(1)安装命令如下,
npm install clean-webpack-plugin --save-dev
(2)修改webpack.config.js,在plugins节点中为其配置,
/*** webpack项目的配置文件*/
const HtmlWebpackPlugin = require('html-webpack-plugin');
const {CleanWebpackPlugin} = require('clean-webpack-plugin');
const path = require("path");module.exports = {//提供 mode 配置选项,告知 webpack 使用相应模式的内置优化-[也可以从cli中传递模式参数]mode:"production",//入口文件配置entry:"./src/index.js",//出口文件output:{filename: '[name].js',//占位符[name],保证文件名唯一path: path.resolve(__dirname,"dist"),//指定输出文件保存在根目录下的dist文件夹中},//模块配置module:{rules:[//css加载器{test:/\.css$/,//正则表达式-匹配css样式文件use:['style-loader','css-loader'],//配置样式加载器},//图片加载器{test:/\.(png|svg|jpg|gif)$/,//正则表达式-匹配图片文件use:['file-loader'],//配置图片文件加载器},//字体资源加载器{test:/\.(woff|woff2|eot|ttf|otf)$/,//正则表达式-匹配字体资源use:['file-loader'],//配置字体资源加载器},//配置CSV、TSV加载器{test:/\.(csv|tsv)$/,use:"csv-loader",},//配置XML加载器{test:/\.xml$/,use:"xml-loader",}]},//插件配置plugins:[new HtmlWebpackPlugin({title: 'Output Management'}),new CleanWebpackPlugin(),//指定要清理的目录]
};
webpack:打包进度条
除了第三方插件,webapck也提供了一些内置插件,其中之一就是ProgressPlugin——用于在打包前端项目时显示打包进度条,只需要修改webpack.cionfig.js配置文件的内容为如下即可。
/*** webpack项目的配置文件*/
const HtmlWebpackPlugin = require('html-webpack-plugin');
const {CleanWebpackPlugin} = require('clean-webpack-plugin');
const webpack = require('webpack'); //获取webpack内置插件
const path = require("path");module.exports = {//提供 mode 配置选项,告知 webpack 使用相应模式的内置优化-[也可以从cli中传递模式参数]mode:"production",//入口文件配置entry:"./src/index.js",//出口文件output:{filename: '[name].js',//占位符[name],保证文件名唯一path: path.resolve(__dirname,"dist"),//指定输出文件保存在根目录下的dist文件夹中},//模块配置module:{rules:[//css加载器{test:/\.css$/,//正则表达式-匹配css样式文件use:['style-loader','css-loader'],//配置样式加载器},//图片加载器{test:/\.(png|svg|jpg|gif)$/,//正则表达式-匹配图片文件use:['file-loader'],//配置图片文件加载器},//字体资源加载器{test:/\.(woff|woff2|eot|ttf|otf)$/,//正则表达式-匹配字体资源use:['file-loader'],//配置字体资源加载器},//配置CSV、TSV加载器{test:/\.(csv|tsv)$/,use:"csv-loader",},//配置XML加载器{test:/\.xml$/,use:"xml-loader",}]},//插件配置plugins:[new webpack.ProgressPlugin(),//打包进度条new HtmlWebpackPlugin({title: 'Output Management'}),new CleanWebpackPlugin(),//指定要清理的目录]
};
webpack开发配置
webpack:错误追踪
通常的,我们在开发时,非常乐于看到开发工具能够直接提示我们:代码报错的文件、位置信息,而不是泛泛的告诉你一声:代码运行错误,这样的错误提示是没有意义的。
为了追踪代码中的出错位置,我们可以使用source map配置项,在启用此配置项时,JavaScript内部就会通过一中反映射,将打包后的代码中错处的问题,映射到打包之前的文件之中,并进行提示。
(1)修改webapck.config.js配置文件中的配置项,
/*** webpack项目的配置文件*/
const HtmlWebpackPlugin = require('html-webpack-plugin');
const {CleanWebpackPlugin} = require('clean-webpack-plugin');
const webpack = require('webpack'); //获取webpack内置插件
const path = require("path");module.exports = {//提供 mode 配置选项,告知 webpack 使用相应模式的内置优化-[也可以从cli中传递模式参数]mode:"production",//入口文件配置entry:"./src/index.js",//出口文件output:{filename: '[name].js',//占位符[name],保证文件名唯一path: path.resolve(__dirname,"dist"),//指定输出文件保存在根目录下的dist文件夹中},devtool: 'inline-source-map',//source-map配置//模块配置module:{rules:[//css加载器{test:/\.css$/,//正则表达式-匹配css样式文件use:['style-loader','css-loader'],//配置样式加载器},//图片加载器{test:/\.(png|svg|jpg|gif)$/,//正则表达式-匹配图片文件use:['file-loader'],//配置图片文件加载器},//字体资源加载器{test:/\.(woff|woff2|eot|ttf|otf)$/,//正则表达式-匹配字体资源use:['file-loader'],//配置字体资源加载器},//配置CSV、TSV加载器{test:/\.(csv|tsv)$/,use:"csv-loader",},//配置XML加载器{test:/\.xml$/,use:"xml-loader",}]},//插件配置plugins:[new webpack.ProgressPlugin(),//打包进度条new HtmlWebpackPlugin({title: 'Output Management'}),new CleanWebpackPlugin(),//指定要清理的目录]
};
(2)我们故意在index.js中加入一句代码如下,
(3)重新打包,并运行程序,看到如下的出错提示,这样,根据错误提示信息,我们看可以直接追踪到index.js文件的38行,这正是我们刚才故意抛出Error错误的地方。
webpack:启用观察者模式
webpack当前搭建的项目,每次修改之后,都需要重新打包,然后找到dist/index.html重新打开,才能看到修改之后的效果,这种重复性的操作在实际开发中显得异常繁琐。我们需要一种插件/配置,可以在修改代码之后,实时更新看到index.html视图中修改之后的内容。
要实现此种效果,只需要在package.json文件中的scripts标签中,添加如下脚本即可,
"watch": "webpack --watch",
然后,我们使用命令:npm run watch,启动项目,然而却不会退出命令行。这是因为 script 脚本还在观察文件。现在,webpack 观察文件的同时,我们先移除我们之前引入的错误:
此时,我们注释掉刚才的throw new Error()抛出错误的语句,然后刷新浏览器,即可看到最新的效果。
从此种行为可以得到:观察者模式下,如果其中一个文件被更新,代码将被重新编译,所以你不必手动运行整个构建。
webpack:webpack-dev-server本地服务器
webpack的观察者模式帮我们解决了自动编译/构建的问题,但是,在每次修改代码之后,我们仍然需要手动刷新浏览器,才可以看到最新的内容,这显然也不是十分友好。
因此,我们可以通过使用 webpack-dev-server搭建一个本地服务器,使其能够实时重新加载(live reloading),实现类似于java后端的热部署操作。
(1)安装webpack-dev-server依赖包,
npm install --save-dev webpack-dev-server
(2)修改webpack.config.js配置文件,使得webpack-dev-server可以起作用,
/*** webpack项目的配置文件*/
const HtmlWebpackPlugin = require('html-webpack-plugin');
const {CleanWebpackPlugin} = require('clean-webpack-plugin');
const webpack = require('webpack'); //获取webpack内置插件
const path = require("path");module.exports = {//提供 mode 配置选项,告知 webpack 使用相应模式的内置优化-[也可以从cli中传递模式参数]mode:"production",//入口文件配置entry:"./src/index.js",//出口文件output:{filename: '[name].js',//占位符[name],保证文件名唯一path: path.resolve(__dirname,"dist"),//指定输出文件保存在根目录下的dist文件夹中},devtool: 'inline-source-map',//source-map配置//devserver配置devServer:{static: './dist',//指定dist目录下的内容为devServer实时监视的目录},//模块配置module:{rules:[//css加载器{test:/\.css$/,//正则表达式-匹配css样式文件use:['style-loader','css-loader'],//配置样式加载器},//图片加载器{test:/\.(png|svg|jpg|gif)$/,//正则表达式-匹配图片文件use:['file-loader'],//配置图片文件加载器},//字体资源加载器{test:/\.(woff|woff2|eot|ttf|otf)$/,//正则表达式-匹配字体资源use:['file-loader'],//配置字体资源加载器},//配置CSV、TSV加载器{test:/\.(csv|tsv)$/,use:"csv-loader",},//配置XML加载器{test:/\.xml$/,use:"xml-loader",}]},//插件配置plugins:[new webpack.ProgressPlugin(),//打包进度条new HtmlWebpackPlugin({title: 'Output Management'}),new CleanWebpackPlugin(),//指定要清理的目录]
};
(3)修改package.json的scripts命令脚本,添加一个 新的script 脚本,可以直接运行开发服务器(dev server):"start": "webpack-dev-server --open",
(4)现在,在命令行中运行 npm start
,就会看到浏览器自动加载页面。如果现在修改和保存任意源文件,web 服务器就会自动重新加载编译后的代码。
(5)此时,浏览器中显示警告信息,尽管这不是Error错误,但是,在webpack程序中,这仍然会阻断程序的运行,我们可以对其进行抑制即可,
截止到目前,我们的package.json文件结构如下,
{"name": "cesium-webpack","version": "1.0.0","description": "webpack-Cesium","private": true,"main": "index.js","scripts": {"test": "echo \"Error: no test specified\" && exit 1","build": "webpack","watch": "webpack --watch","start": "webpack-dev-server --open"},"author": "Xwd","license": "ISC","devDependencies": {"clean-webpack-plugin": "^4.0.0","css-loader": "^6.7.1","csv-loader": "^3.0.5","file-loader": "^6.2.0","html-webpack-plugin": "^5.5.0","style-loader": "^3.3.1","webpack": "^5.74.0","webpack-cli": "^4.10.0","webpack-dev-server": "^4.11.1","xml-loader": "^1.2.1"},"dependencies": {"lodash": "^4.17.21"}
}
webpack:两小时极速入门相关推荐
- 24小时学会python_零基础python24小时极速入门学习
本篇文章是 Python 入门必须掌握的知识点,24小时极速入门,是针对那些没有任何编程经验,从零开始学习 Python 的同学 想要快速学会python的6个关键点. 分别是:数据类型. 条件判断. ...
- Python Mosh 学习笔记(6小时完全入门)
Python Mosh 学习笔记 这两个博主写得都挺好的. 六小时极速入门 Python笔记 code with Mosh 02:01:45 2D Lists 02:05:11 My Complete ...
- 入职必备两小时入门SVN(二)
入职必备两小时入门SVN(二) 1.SVN使用 1.创建版本库 打开SVN服务端(开始菜单) 右击Repository.点击Create Repository,出现下面画面,选择默认就好 2.导入项目 ...
- 入职必备两小时入门SVN(一)
入职必备两小时入门SVN(一) 1.简介 SVN的全称是Subversion,即版本控制系统.它是最流行的一个开放源代码的版本控制系统.作为一个开源的版本控制系统,Subversion管理着随时间改变 ...
- 两个月入门深度学习,全靠动手实践!一位前端小哥的经验分享
两个月入门深度学习,全靠动手实践!一位前端小哥的经验分享 在当前社会,技术日新月异,一个全栈工程师不及时学习新知识,掌握AI技能,再过两年就算不上"全栈"了. 产品发烧友.前端 ...
- webpack - vue Component 从入门到放弃(三)
离上一篇已经一个星期了,人的拖延症是没法救的,今晚趁着蒙蒙春雨,来抒发抒发情感. 上一篇简单介绍了webpack的配置,这里稍微再做一一下延伸 插件 插件可以完成更多 loader 不能完成的功能.插 ...
- 九十分钟极速入门Linux——Linux Guide for Developments 学习笔记
转载自: 九十分钟极速入门Linux--Linux Guide for Developments 学习笔记 http://mp.weixin.qq.com/s?__biz=MzAwNTMxMzg1MA ...
- Knative 初体验:CICD 极速入门
Knative 社区很早就在讨论用 Tekton 替换 Build 模块的相关事宜.Knative Build 官方已经正式说明不再建议使用 Knative Build 了. 如果你知道 Knativ ...
- 60 分钟极速入门 PyTorch
2017 年初,Facebook 在机器学习和科学计算工具 Torch 的基础上,针对 Python 语言发布了一个全新的机器学习工具包 PyTorch. 因其在灵活性.易用性.速度方面的优秀表现,经 ...
最新文章
- Algorithm——最长公共前缀
- Javascript函数的简单学习
- UML从需求到实现---类图(2)
- Window.Open- ShowModalDialog- Window.Open Session丢失的Solution
- 【Linux部署】Linux环境 .rar 格式文件处理工具安装使用(一波两折避坑指北)
- Hive中的数据库、表、数据与HDFS的对应关系
- 例子---PHP与Form表单之二
- 漏洞 立即留言_漏洞挖掘小白入坑指南
- 发现身边90%的朋友都是负债累累,是什么情况?
- 学习廖雪峰Git教程后对Git知识点的一些总结(4)
- 2022-2027年中国民办高校行业市场调研及未来发展趋势预测报告
- SpringBoot+Vue实现前后端分离高校学生考勤系统
- 数据解析——Jsonpath
- 论坛源码推荐(12月24日):OS X原生开源游戏模拟器OpenEmu iOS 7条形码扫描器
- 一款陌生人状态社交软件--same
- Flink实时数仓--ClickHouse数据可视化接口实现、Sugar 数据大屏
- 英语口语收集(十九)
- 案例分析默写题1__立项管理_可行性研究的内容_可行性研究报告的内容
- php crypt md5,PHP crypt()-返回的md5哈希
- 《从零开始的记账本开发》第2篇 概要设计