中企动力 > 商学院 > web教程教程
  • ?

    如何学习简单的Web开发效率技巧

    卫天蓉

    展开

    发展不一定是你已经知道的,而是你学习接下来你需要知道的事情的基本能力。

    什么是开发人员?它是关于记忆语法吗?是否能够重构低效的代码?是为自己制作方便的小捷径吗?从强大的开发商在这里氩星球的智慧中学习,更好的装备,我提供了一些工具,能够回答这些问题,我是来学习它是所有这些东西......和他们没有。

    当您使用最初未构建的现有Web应用程序时,每个项目都有自己的怪癖和细微差别。有许多工具,语言,框架,库等等,你无法掌握它们,更不用说它们总是在变化。发展不一定是你已经知道的,而是你学习接下来你需要知道的事情的基本能力。

    也许最重要的学习方法之一就是提高效率。当我开始在Planet Argon实习时,我仍在滚动应用程序,寻找每个文件夹中所需的东西。我发现自己正在搜索,好像我还在使用小型教程大小的应用程序。但是,具有大后端的真实应用程序是另一回事。

    为了节省一点时间而担心微小的命令似乎是一件微不足道的事情,但它确实加起来了。

    以下是一些简单的命令和提示,可以提高您的效率:

    命令'P' 将直接搜索包含您正在查找的单词的任何文件,例如模型或控制器。例如,搜索“user”以查找User.rb.命令移位'F' 将全局搜索应用程序以查找您要查找的任何特定单词。如果您要查找的内容不在文件名中,但您不确定它的位置,那么这是您的最佳选择。编辑器通常还有一个区域来指定特定路径,因此您只能在某个目录中进行搜索。命令“F” 将在您当前正在查看的任何文件中进行本地搜索。当文件很大但你需要找到类似于唯一id的位置时,这很好。

    所以现在你可以在编辑器中节省一些时间在应用程序中弹跳,但终端怎么样?

    不要像我曾经那样是一个菜鸟,并输入完整的文件名。开始键入文件名,然后按Tab键进行自动完成。例如:如果您知道当前目录中只有一个以“p”开头的文件,则键入“p”并按Tab键,它将完成文件名。如果有多个并按Tab键,它将显示存在以“p”开头的文件。

    如何从某种查询中查找终端中的某些特定返回数据?假设您正在寻找与“home_page”相关的特定路线,因此您可以运行“rake路线”但是您只需要滚动一系列路线,直到看到“home_page”。

    而不是让自己度过这种痛苦而不是尝试贪图!运行 rake routes | grep home_page 此命令将确保您的终端仅返回包含“home_page”的路由。

    但如果这对你来说效率不高呢?为什么不节约能源,挽救疲惫的小手指?您目前必须键入 rake routes | grep home_page 每次要搜索该路线的时间。好吧,幸运的是,你可以创建一个别名!别名是一个短名称,可直接引用特定语法。

    创建一个相对简单。你需要在别处保存你的别名,通常是.bashrc,.bash_profile,或者,如果你使用的是Oh My Zsh(强烈推荐),它存储在你的.zshrc中。首先输入 vim .bashrc 以在基于终端的编辑器中打开文件。按'i'可以在文件中写入。您可以根据需要为别名命名,在这种情况下,我将其命名为“grepr”,因此我将记住这意味着“grep路由。”输入 alias grepr=“rake routes | grep”。按esc退出插入模式,然后键入“:wq”以保存到文件并退出编辑器。当你关闭时,重新打开你的终端并导航回你的应用程序目录,你将能够输入 grepr home_page ,它的行为将完全相同 rake routes | grep home_page。

    如果您能够更快地找到所需内容,那么您将有更多时间来调查您要解决的任何奇怪问题。如果您对开发不熟悉,希望其中一些技巧可以帮助您完成自己的旅程。继续学习,保持冷静!

  • ?

    web前端开发之HTML 基础教程

    紫南

    展开

    教程简介:

    HTML (英文全称:HyperText Markup Language):即超文本标记语言,标准通用标记语言下的一个应用。那么,HTML 和 Web 前端开发有什么关系呢?HTML 是通向 WEB 技术世界大门的钥匙。在本 HTML 教程中,您将学习如何使用 HTML 来创建站点, HTML 非常容易学习,只要多看本教程,相信你会喜欢它的!

    什么是“超文本标记语言”呢?“超文本”就是指页面内包括文本及超过文本以外的其它元素,可以包含图片、链接,甚至音乐、程序等非文字元素。在WWW上的一个超媒体文档称之为一个页面,Web页面也就是通常所说的网页,在这里不作区分。

    HTML结构:

    HTML 的结构一般包括 标签和 标签, 和 这2个标记符分别表示网页的头部和正文。头部中可包含页面的标题、关键词、描述说明等内容,它本身不作为内容来显示,但影响网页显示的效果。 当中是网页实际显示的内容,正文标记符又被称为实体标记。页面当中通常包含有很多指向其他相关页面或其他节点的指针,通过点击,可以很方便地获取新的网页,这是 HTML 获得广泛推广运用最重要的原因之一,而由这些相互之间存在关联的页面组成的有机集合便是网站。究竟 HTML 为什么会被普及?这就要归功于互联网的高速发展,对于编程语言的需求直线上升。而 HTML5 具有超集方式的简易性、运用广泛的可拓展性、灵活应变的平台适应性以及简单的通用性。凭借着这些特性,HTML 越来越受到人们的喜爱。

    以下是最简单的html文档结构:

    本文为 HTML 基础教程第一章,下一章:HTML 教程导读【小提示】tips:本文由数据微学院作者原创,转载请注明来源或联系作者。更多优秀参考好文请关注【数据微学院】个人图书馆。

    相关搜索

    • 前端招聘
    • html教程
    • web开发招聘
    • web开发教程
    • web开发入门
    • 开发招聘
  • ?

    很久没有发DeepWeb的教程了

    左三德

    展开

    如何5个简单的步骤安装Tor for Chrome

    如果您想使用Chrome浏览器,但仍保持匿名状态,只需几个步骤即可安装Tor for Chrome。就是这样。

    尽管Google Chrome本身不支持Tor,但您可以通过Chrome浏览器安装该程序来增强您的在线匿名性。

    什么是TOR

    有几个虚拟专用网络(VP恩)应用程序可帮助您在网上匿名浏览。然而,Tor是一款流行且可靠的软件,最初称为洋葱路由器。

    这是一个理想的工具,因为它是免费的,匿名性的

    也就是说,与Tor结合使用VP恩是实现完整安全性的最佳途径。

    匿名

    Tor技术上非常强大,几乎无法追踪。

    您可以使用Tor浏览器在黑网上查看网站,并且还可以使用它匿名发送消息。

    值得注意的是,有些人使用Tor进行非法活动,但还有其他几个原因可能会导致您想要选择匿名浏览策略。

    如果您的隐私很重要,您可以轻松地在您的Chrome浏览器上安装Tor。

    使用Tor,您可以通过选择来自世界各地的远程代理匿名浏览互联网。

    当你访问特定的网站时,你的连接将会从世界各地的Tor中继站跳出,你的IP地址将被公开访问。

    总之,它不能追溯到你的实际位置。

    TOR FOR CHROME

    Tor有一个适用于Firefox的附加组件。不过,您也可以为Chrome添加扩展程序。这是一个简单的方法,可以很容易地执行。

    因此,请查看这些添加按钮的步骤,以便您可以在Chrome浏览器上访问Tor。

    第1步 - 下载TOR浏览器

    百度搜索 TOR 即可使用与您的设备相关的链接。有Windows版本,Linux版本和Mac版本的单独下载链接。从这些链接下载浏览器。下载完文件后,执行它以解除Tor浏览器并将其放置在计算机上的文件夹中。打开此文件夹,然后点击“启动浏览器”。

    第2步 - 代理切换

    接下来,您必须安装Proxy Switchy程序(https://chrome.google/webstore/detail/proxy-switchy/caehdcpeofiiigpdhbabniblemipncjj)。这必须安装在Chrome浏览器中。这是一款Chrome扩展程序,可让您切换代理服务器

    打开谷歌浏览器并点击“Chrome菜单”(你可以在右上角找到它)。前往设置。”移到“网络”旁边,然后点击“更改代理设置”图标/按钮。点击LAN设置区域。检查允许您使用LAN的代理服务器的选项。在“地址”部分中,输入VP恩 服务器地址。您可以从列表中选择。对于“端口”,输入80,然后按“确定”。为了获得完整的隐私,请不要检查绕过代理服务器的本地地址。每当您尝试访问网站时,都会有一个提示询问您的用户名和密码。输入VP恩 详细信息并登录。

    这完成了Chrome配置。

    第3步 - 更改名称

    当您打开您下载的Tor浏览器时,您可以找到控制面板。在那里,您可以更改Proxy Switchy配置文件的名称,并将其称为Tor。

    转到手动配置选项。为HTTP代理和端口输入代码127.0.0.1,输入数字8118。选中“在所有协议中使用相同的代理服务器”框。

    第4步 - 保存并继续

    完成所有这些自定义和更改后,单击窗口底部的“保存”按钮。

    转到Proxy Switchy的不同选项。移至“常规”选项卡。检查“快速切换”。同时检查“二进制开关”框。

    第5步 - 选择名称

    如果您使用配置文件1,请选择“直接连接”选项。这是从下拉框中选择的。如果您使用Profile 2选择,请选择在步骤3中输入的名称。使用下拉框执行此操作。点击“保存”以保留这些选择。

    TOR - KRONYMOUS的替代方法

    第1步:安装Chrome的Kronymous扩展。(https://chrome.google/webstore/detail/kronymous-access-internet/dfdhngcahhplaibahkkjhdklhihbaikl)

    第2步:当您的Chrome浏览器中安装了Kronymous扩展程序时,您可以看到列表中的所有应用程序。点击Kronymous应用程序,并在出现弹出窗口时点击“确定”按钮。

    步骤3:点击“Start Tor Proxy”选项。服务在几分钟内开始。

    步骤4:检查显示Tor已经启动的完整消息。

    第5步:您现在可以在Chrome浏览器上运行Tor网络,并且可以开始匿名浏览。

    其他步骤

    除了上述步骤之外,您还需要进行一些更改,以便Tor有效地为您创建匿名。这里有一些提示:

    强烈建议使用Tor浏览器。不要使用Torrent应用程序共享文件。不要使用任何浏览器插件,如Flash或QuickTime。浏览网站时使用HTTPS版本。在线时,请勿打开任何使用Tor浏览器下载的文档。

    完成此操作后,您将创建一个开关,使您可以使用Chrome浏览器访问Tor。这是从Chrome浏览器访问Tor最简单的方法之一。

    尽管Chrome操作系统支持许多VPN连接,但使用基本接口不能使用本地方法连接到Tor网络。

    在线匿名越来越流行,越来越多的人开始对Tor感兴趣,既有技术精湛的用户也有普通用户。

    Google Chrome浏览器和相应的设备也越来越受欢迎,因此Chrome用户在他们的操作系统上使用Tor时感兴趣。

  • ?

    Web开发入门教程:Pycharm轻松创建Flask项目

    郁迎松

    展开

    打开Pycharm的file,选择创建新的项目,然后弹出对话框,我们可以看到里面有很多的案例,Flask、Django等等,我们选择生成Flask的demo程序

    选择创建之后一个简易的Flask项目就出现在我们眼前,第一个是入口程序,还有一个static的静态目录,templates是模板存放的位置

    我们可以手动来启动这个Flask项目,但是这不是很理智的,在Pycharm上面有个run,我们可以选择run来启动Flask的服务,默认打开的是5000端口

    打开浏览器输入http://localhost:5000,查看网站运行状况,页面输出了我们返回的hello world

    更新我们的路由,添加一个test的路由,然后再加一个test/name的路由,这里的name是可变的,我们可以随便输入,然后通过render_template传入到test.html模板文件中

    templates/test.html是模板文件,变量用两个大括号括起来,render_template函数会将变量渲染模板然后输出

    重启项目,打开浏览器输入http://localhost:5000/test/,查看网站运行状况,页面输出了your name is: None,说明我们的name是一个None,接下来我们变换一下name,输入http://localhost:5000/test/lisi,页面内容变化了,输出your name is: lisi

  • ?

    Web Worker 使用教程(转载自阮一峰博客)

    聂雨真

    展开

    一、概述

    JavaScript 语言采用的是单线程模型,也就是说,所有任务只能在一个线程上完成,一次只能做一件事。前面的任务没做完,后面的任务只能等着。随着电脑计算能力的增强,尤其是多核 CPU 的出现,单线程带来很大的不便,无法充分发挥计算机的计算能力。

    Web Worker 的作用,就是为 JavaScript 创造多线程环境,允许主线程创建 Worker 线程,将一些任务分配给后者运行。在主线程运行的同时,Worker 线程在后台运行,两者互不干扰。等到 Worker 线程完成计算任务,再把结果返回给主线程。这样的好处是,一些计算密集型或高延迟的任务,被 Worker 线程负担了,主线程(通常负责 UI 交互)就会很流畅,不会被阻塞或拖慢。

    Worker 线程一旦新建成功,就会始终运行,不会被主线程上的活动(比如用户点击按钮、提交表单)打断。这样有利于随时响应主线程的通信。但是,这也造成了 Worker 比较耗费资源,不应该过度使用,而且一旦使用完毕,就应该关闭。

    Web Worker 有以下几个使用注意点。

    (1)同源限制

    分配给 Worker 线程运行的脚本文件,必须与主线程的脚本文件同源。

    (2)DOM 限制

    Worker 线程所在的全局对象,与主线程不一样,无法读取主线程所在网页的 DOM 对象,也无法使用

    document

    、

    window

    、

    parent

    这些对象。但是,Worker 线程可以

    navigator

    对象和

    location

    对象。

    (3)通信联系

    Worker 线程和主线程不在同一个上下文环境,它们不能直接通信,必须通过消息完成。

    (4)脚本限制

    Worker 线程不能执行

    alert()

    方法和

    confirm()

    方法,但可以使用 XMLHttpRequest 对象发出 AJAX 请求。

    (5)文件限制

    Worker 线程无法读取本地文件,即不能打开本机的文件系统(

    file://

    ),它所加载的脚本,必须来自网络。

    二、基本用法

    2.1 主线程

    主线程采用

    new

    命令,调用

    Worker()

    构造函数,新建一个 Worker 线程。

    var worker =newWorker('work.js');

    Worker()

    构造函数的参数是一个脚本文件,该文件就是 Worker 线程所要执行的任务。由于 Worker 不能读取本地文件,所以这个脚本必须来自网络。如果下载没有成功(比如404错误),Worker 就会默默地失败。

    然后,主线程调用

    worker.postMessage()

    方法,向 Worker 发消息。

    worker.postMessage('Hello World');worker.postMessage({method:'echo', args:['Work']});

    worker.postMessage()

    方法的参数,就是主线程传给 Worker 的数据。它可以是各种数据类型,包括二进制数据。

    接着,主线程通过

    worker.onmessage

    指定监听函数,接收子线程发回来的消息。

    worker.onmessage =function(event){ console.log('Received message '+ event.data);doSomething();}functiondoSomething(){ // 执行任务 worker.postMessage('Work done!');}

    上面代码中,事件对象的

    data

    属性可以获取 Worker 发来的数据。

    Worker 完成任务以后,主线程就可以把它关掉。

    worker.terminate();

    2.2 Worker 线程

    Worker 线程内部需要有一个监听函数,监听

    message

    事件。

    self.addEventListener('message',function(e){ self.postMessage('You said: '+ e.data);},false);

    上面代码中,

    self

    代表子线程自身,即子线程的全局对象。因此,等同于下面两种写法。

    // 写法一this.addEventListener('message',function(e){ this.postMessage('You said: '+ e.data);},false);// 写法二addEventListener('message',function(e){postMessage('You said: '+ e.data);},false);

    除了使用

    self.addEventListener()

    指定监听函数,也可以使用

    self.onmessage

    指定。监听函数的参数是一个事件对象,它的

    data

    属性包含主线程发来的数据。

    self.postMessage()

    方法用来向主线程发送消息。

    根据主线程发来的数据,Worker 线程可以调用不同的方法,下面是一个例子。

    self.addEventListener('message',function(e){var data = e.data; switch (data.cmd){ case 'start': self.postMessage('WORKER STARTED: '+ data.msg);break; case 'stop': self.postMessage('WORKER STOPPED: '+ data.msg); self.close(); // Terminates the worker.break; default: self.postMessage('Unknown command: '+ data.msg);};},false);

    上面代码中,

    self.close()

    用于在 Worker 内部关闭自身。

    2.3 Worker 加载脚本

    Worker 内部如果要加载其他脚本,有一个专门的方法

    importScripts()

    。

    importScripts('script1.js');

    该方法可以同时加载多个脚本。

    importScripts('script1.js','script2.js');

    2.4 错误处理

    主线程可以监听 Worker 是否发生错误。如果发生错误,Worker 会触发主线程的

    error

    事件。

    worker.onerror(function(event){ console.log(['ERROR: Line ', e.lineno,' in ', e.filename,': ', e.message ].join(''));});// 或者worker.addEventListener('error',function(event){ // ...});

    Worker 内部也可以监听

    error

    事件。

    2.5 关闭 Worker

    使用完毕,为了节省系统资源,必须关闭 Worker。

    // 主线程worker.terminate();// Worker 线程self.close();

    三、数据通信

    前面说过,主线程与 Worker 之间的通信内容,可以是文本,也可以是对象。需要注意的是,这种通信是拷贝关系,即是传值而不是传址,Worker 对通信内容的修改,不会影响到主线程。事实上,浏览器内部的运行机制是,先将通信内容串行化,然后把串行化后的字符串发给 Worker,后者再将它还原。

    主线程与 Worker 之间也可以交换二进制数据,比如 File、Blob、ArrayBuffer 等类型,也可以在线程之间发送。下面是一个例子。

    // 主线程var uInt8Array =newUint8Array(newArrayBuffer(10));for(var i =0; i < uInt8Array.length;++i){ uInt8Array[i]= i *2; // [0, 2, 4, 6, 8,...]}worker.postMessage(uInt8Array);// Worker 线程self.onmessage =function(e){var uInt8Array = e.data;postMessage('Inside worker.js: uInt8Array.toString() = '+ uInt8Array.toString());postMessage('Inside worker.js: uInt8Array.byteLength = '+ uInt8Array.byteLength);};

    但是,拷贝方式发送二进制数据,会造成性能问题。比如,主线程向 Worker 发送一个 500MB 文件,默认情况下浏览器会生成一个原文件的拷贝。为了解决这个问题,JavaScript 允许主线程把二进制数据直接转移给子线程,但是一旦转移,主线程就无法再使用这些二进制数据了,这是为了防止出现多个线程同时修改数据的麻烦局面。这种转移数据的方法,叫做Transferable Objects。这使得主线程可以快速把数据交给 Worker,对于影像处理、声音处理、3D 运算等就非常方便了,不会产生性能负担。

    如果要直接转移数据的控制权,就要使用下面的写法。

    // Transferable Objects 格式worker.postMessage(arrayBuffer,[arrayBuffer]);// 例子var ab =newArrayBuffer(1);worker.postMessage(ab,[ab]);

    四、同页面的 Web Worker

    通常情况下,Worker 载入的是一个单独的 JavaScript 脚本文件,但是也可以载入与主线程在同一个网页的代码。

    addEventListener('message',function(){postMessage('some message');},false);

    上面是一段嵌入网页的脚本,注意必须指定

    这里的Lodash是一个JavaScript库,这里引用的意味就是给大家展示一下我们平时使用第三方JavaScript库的做法,这样的做法会产生很多问题,因为通过index.html的联系,很明显,index.js对第三方库lodash产生了隐形依赖,之所以说是隐形依赖,是因为在lodash被引用之前,index.js中的双下划线变量(lodash提供的一个变量)还是未知的,只有在lodash被引用之后,这个变量才能发挥作用,显而易见,这样做的很危险的,这样会产生很多问题:

    无法立即体现,脚本的执行依赖于外部扩展库(external library)。如果依赖不存在,或者引入顺序错误,应用程序将无法正常运行。如果依赖被引入但是并没有使用,浏览器将被迫下载无用代码。Webpack的价值就这样体现出来了,当你的项目中引用的JavaScript文件,html页面越来越多,就会出现一些不可避免的依赖问题,而我们通过Webpack可以解决这一问题,对于一个html页面,我们可以该页面依赖的所有JavaScript文件打包在一起,构成一个JavaScript文件,这样,html页面只需要引用这一个JavaScript文件即可,上面说的问题,就可以完全被避免。当然自己打包也是可以的,不过通过Webpack这一神器,就没那么麻烦了,你只要告诉它,你需要把哪些文件打包,输出到哪里,它就可以自动分析所有JavaScript的依赖关系,然后帮你打包成一个文件。

    接下来,我们就来打包一次试试。

    使用Webpack打包

    在打包之前,我们还需要做一点小小的调整----将开发环境和生产环境分开:

    webpack-learning |- package.json+ |- /dist+ |- index.html- |- index.html |- /src |- index.js这样一来,src文件夹里面,放的就是我们开发的环境,所有的代码编写都在这里进行,而相对稳定的html文件就直接放入dist文件夹中,作为生产环境的文件,这样有一个好处,每一次更新src之后,只需要把src中的东西重新打包,然后供生产环境中的html文件使用,就行了,而html文件本身,几乎不用被更改。

    因为我们用到了lodash包,所以需要在npm中安装lodash依赖:

    npm install --save lodash细心的朋友可能注意到,这里使用的是--save而不是--save-dev,两者的区别是,--save是生产环境的依赖,也就是供给用户使用的依赖,而--save-dev是开发环境的依赖,比如Webpack,在代码完成并且打包之后,就不需要再使用到它了,显然用户是无需接触到Webpack的,所以这里Webpack属于开发环境的依赖。

    添加lodash依赖之后,我们就可以在js文件中导入并且使用了:

    src/index.js

    + import _ from 'lodash';+ function component() { var element = document.createElement('p');- // Lodash, currently included via a script, is required for this line to work+ // Lodash, now imported by this script element.innerHTML = _.join(['Hello', 'webpack'], ' '); return element; } document.body.appendChild(component());因为接下来我们要使用Webpack打包所有的js,这样的话,我们就不需要再自己在html引入JavaScript库了,而只需要引入打包之后的文件就行了,我们先约定以后打包的文件名叫做bundle.js,那么接下来,修改html文件:

    dist/index.html

    Getting Started- - + 这样的话,我们就可以开始打包了。

    在命令行输入

    webpack-cli src/index.js --output dist/bundle.js如果不行的话,尝试

    // linuxnode_modules/.bin/webpack-cli src/index.js --output dist/bundle.js// windowsnode_modules.binwebpack-cli src/index.js --output dist/bundle.js这一行的意思是执行Webpack命令行程序,将src/index.js作为入口文件,自动分析index.js的依赖,并且将所有依赖和index.js本身一起打包成一个文件,输出到dist/bundle.js,执行这一行,可以看到Webpack打包成功的输出信息:

    Hash: 61bf2519e9ef5fa0eb5eVersion: webpack 4.1.0Time: 4080msBuilt at: 2018-3-7 16:58:36 Asset Size Chunks Chunk Namesbundle.js 69.6 KiB 0 [emitted] mainEntrypoint main = bundle.js [1] (webpack)/buildin/module.js 519 bytes {0} [built] [2] (webpack)/buildin/global.js 509 bytes {0} [built] [3] ./src/index.js 231 bytes {0} [built] + 1 hidden module打包成功并且输出之后,你就可以打开html文件看看结果了:

    html运行结果

    可见打包之后的JavaScript能够成功运行,并且解决了之前说的几个问题,这就是Webpack的主要功能。

    但是你可能会问,每次都要自己输入巴拉巴拉一大串命令,那也太麻烦了吧,Webpack显然想到了这一点,它是支持配置文件的,你只需要在项目根目录下新建一个配置文件webpack.config.js,并且按照Webpack中文文档给出的语法进行编写就行了。下面给出一个配置文件的例子:

    webpack.config.js

    const path = require('path');module.exports = { entry: './src/index.js', output: { filename: 'bundle.js', path: path.resolve(__dirname, 'dist') }};完成配置文件之后,你需要打包时,就不需要再自己输入入口和输出了,直接这样就行了

    webpack-cli// 如果不行尝试// linuxnode_modules/.bin/webpack-cli// windowsnode_modules.binwebpack-cliNPM脚本

    有了配置文件你可以还不满足,我既然有npm,为什么不能直接让npm帮我运行呢,答案是可以的,npm支持用户自定义脚本,用户可以在npm的配置文件中添加自己的脚本内容,然后使用下面给出的指令来运行用户的脚本

    npm run 脚本名这样的话,我们不是可以自己定义一个build脚本,让它完成Webpack打包的任务呢。

    package.json

    { ... "scripts": { "build": "webpack-cli" }, ...}这样一来,只要

    npm run build世界我有,打包全自动!

    关于Webpack的更多

    Webpack的功能当然还不止这些,这里只介绍Webpack的基本功能打包,当你阅读完这篇文章,对Webpack是什么,怎么用也知道个ABCD了,如果想了解更多,可以关注我,我会给大家继续更新一下Web前端的知识,当然也可以直接上Webpack中文文档上查更多的东西,把自己的项目变得更加自动化,让开发更加有效率。

web教程教程

所有视频需要登录后,才能观看

请先登录您的帐号,即可完整播放,如果您尚未注册帐号,请先点击注册。