如何打造一个令人愉悦的前端开发环境(代码片段)

前端学习123321123 前端学习123321123     2022-12-25     697

关键词:

文章来源

最近几年,前端发展越来越迅速,各种萌新加入了前端这个大家庭,大有赶IOS、超Android的趋势呀!同时,萌新们提出了各种前端工作问题,除了最基础的html、css、js三板斧之外,最让人头疼的应该是关于环境的配置问题,所以以环境作为切入点,开始一系列的前端开发环境配置文章。

主要会涉及到打包、构建、编程工具、debug等等前端环境,以及前后端分离、Nodejs中间层使用伸展面。

工欲善其事必先利其器

以编程工具而言WebStorm、sublime、Atom、VS Code、Brackets等等一大推,这方面我个人是觉得无所谓,萝卜青菜各有所爱,优缺点基本很明显,就看个人的接受情况了,举点例子说下吧:

  • WebStorm 很全面,无论是纯前端还是Nodejs,包括git、svn、命令行、格式化工具都有,使用顺手之后各种方便,而且还直接支持nodejs的debug,作为前端的全能重量级IDE非常不错,唯一不好的就是太重,体现在内存占有,启动时间上。

  • sublime 轻量级文本编辑器,3比较2来说有很大提升,小巧灵活是最大的特点,麻烦的是各种插件的配置,需要自己来组合,不熟悉的人用起来远远不想WebStorm方便,快捷。而且每次新的电脑都要配置一次,比较繁琐。(现在有可以导出配置文件来适用新电脑的方法)

  • Atom类似sublime,比较轻量级,内核主要是Nodejs写出来的,前端各种爱,因为比较适合前端的技术栈,但是大文件的性能问题一直受人诟病,不是很流畅,还有就是插件比起sublime来说还是少了不少,整个生态不如sublime,但是因为是github出的,还是受人青睐不少。我贡献的一个vue格式化插件

  • VS Code 和 Brackets这两个比较小众,使用的很少,我用过VS,感觉还挺不错,就是生态更差,而且很多插件的说明写的很糟糕,让人看不懂。各方面的资料也比较少。Brackets 一个同事使用过,提示比较好,个人感觉入门很不错。貌似还能及时浏览web效果。

个人建议使用入门的时候使用sublime或者Atom就可以,配置一下自己喜欢的插件,基本就可以开始干活了,当然如果是用eclipse已经很习惯的人,我觉得WebStorm这种重型机枪,可能更适合你。不要对工具的提示产生依赖太过于严重,否则很多东西自己会慢慢遗忘的哦!!!

PS:如果要提升自己的逼格怎么办?请使用VIM或者Emacs这种高逼格的编辑方法。

木牛流马

粮草生产的快,也要有好的运输工具才能上到前线,对于前端而言,属于我们的运输工具是打包构建工具。

打包构建工具经历了各种不同的时代,从服务端主宰的打包构建,到现在前端自己主宰的构建工具,不同的需求产生了各种不同的构建工具,这些工具其实也算前端的工作能力之一,因为每一种新的工具都有优缺点,熟悉的使用也并非特别简单的事情。

先来说说都有哪些不同的种类吧:

  • 后端为主要的整体打包工具,这个以FIS作为代表,大家或多或少都应该知道百度出的这个开源打包构建工具链,从整体上解决了前端工程的问题,包括优化、资源加载、模块打包、自动化、部署一系列问题,从功能上看非常全面,FIS3的升级让人也感觉很是不错,不再依赖PHP和java之类的服务端语言,基于Nodejs来做,更加贴近前端社区。那么缺点是什么呢: 生态环境不够丰富,主要插件应该还是百度自己人提供的,参与进来的社区人数不够多。我觉得这方面的原因是fis2当时对PHP和JAVA的依赖,导致大家对fis的兴趣不弄,错过了最佳时机,这个其实跟百度自己的web的技术栈有很大关系。同时带来的好处是,FIS可以结合PHP做整体网站的部署和构建。以上主要是看文档的一些分析,本人并没有用过FIS,有说错请拍砖。这类的打包构建工具还有很多,大部分都是大公司的内部使用,例如京东、马蜂窝之类,都是PHP为主,加上前端的整体构建工具。

  • Grunt派系,这个应该是比较早的Nodejs打包构建工具,一度很是流行,Grunt的好处是提供了一个核心的构建规范,基于文件,来使用各种Grunt的插件组合整个构建行为,当时我记得比较清楚的是我前面文章提到过的Yeoman这个构建工具,核心就是Grunt,自动生成了各种插件配置。但是这个有很大的缺点:一是构建的配置文件写的很长很啰嗦,二是效率不是很高,原因是它构建的方式基于文件的,每次都会产生新的临时文件,这样无形中就会有磁盘的I/O读写,所以会降低整体的构建速度。

  • Gulp新体系,因为以上的Grunt的缺点,Gulp应运而生,借鉴了Unix的管道概念,用Nodejs的stream特性,来组织整个构建链条,在官方的核心只提供几个方法,大家基于官方API来编写自己需要的处理插件,再组合起来,完成构建功能。和Grunt的基本理念很像,但是很多又有区分,例如:配置和运行分离,插件单一职责,规定大于配置等等。关于这两个的比较有很多,大家可以搜搜Grunt Gulp 就知道了。不多说

  • 新的王者Webpack,个人感觉应该是15年上半年到16年初,Webpack横空出世,大有一举统一整个前端构建生态的趋势,貌似现在FE们不会点Webpack相关的,都不好意思说自己是前端了。最初Webpack应该只是和requirejs、browserify之类模块化工具比对,但是其灵活的API和丰富的loader,致使它可以连带完成Gulp之类的构建事件,目前其生态环境巨好,各种插件层出不穷,比较火的React,vuejs等都有相关的针对性loader来优化构建方式,可以说是目前最流行的工具。不过缺点也特别的明显,就是难懂,主要是过于灵活,各种方式都能接受,导致没有一个统一的标准,配置起来特别难受,在群里,一般对于Webpack的配置问题的是最多的。很多新手对于Webpack的各种配置错误,感觉都欲哭无泪,想死的心都有了。相关的文章也很多,推荐题叶的入门指南。

  • 逼格提升的NPM构建方式。这个阮一峰对于前端构建的变化吐槽过,说新的构建工具就是ES6的构建工具。推荐看贺师俊的答案如何评价阮一峰关于前端工具变化快的言论?

就我个人而言,目前主要还是使用的Webpack来构建,当然一些比较老的系统代码,由于历史原因,还是使用的Gulp来构建,也有正在切换之中的,Gulp+Webpack。比较丰富多彩(其实有点混乱)。

三只松鼠--干货


var gulp = require(‘gulp‘);
var less = require(‘gulp-less‘);
var plugins = require(‘gulp-load-plugins‘)();
var pngquant = require(‘imagemin-pngquant‘);


gulp.task(‘default‘, function()
    gulp.src(‘less/zhanzhao.less‘).pipe(less()).pipe(gulp.dest(‘css/‘));
    gulp.src(‘less/liuqian.less‘).pipe(less()).pipe(gulp.dest(‘css/‘));
    gulp.src(‘less/student.less‘).pipe(less()).pipe(gulp.dest(‘css/‘));
    return gulp.src(‘less/company.less‘).pipe(less()).pipe(gulp.dest(‘css/‘));
);

gulp.task(‘clean‘,function()
    return gulp.src(‘publish/‘).pipe(plugins.clean());
);


gulp.task(‘bulid‘, [‘clean‘],function()
  gulp.src(‘favicon.ico‘).pipe(gulp.dest(‘publish/‘));
    gulp.src(‘download/**/*‘).pipe(gulp.dest(‘publish/download/‘));
    gulp.src(‘mail/**/*‘).pipe(gulp.dest(‘publish/mail/‘));
    gulp.src(‘statement/**/*‘).pipe(gulp.dest(‘publish/statement/‘));
    gulp.src(‘template/**/*‘).pipe(gulp.dest(‘publish/template/‘));
  gulp.src(‘css/**/*.css‘).pipe(plugins.minifyCss()).pipe(gulp.dest(‘publish/css/‘));
    gulp.src(‘scripts/**/*.js‘).pipe(plugins.uglify()).pipe(gulp.dest(‘publish/scripts/‘));
  return gulp.src(‘images/**/*‘).pipe(plugins.cache(plugins.imagemin(
            optimizationLevel: 5,
            progressive: true,
            svgoPlugins: [removeViewBox: false],
            use: [pngquant()]
        ))).pipe(gulp.dest(‘publish/images/‘));
);

gulp.task("revision",[‘bulid‘],function()
  gulp.src([‘template/head-js.html‘, ‘template/baidu.html‘]).pipe(plugins.concat(‘head-js.html‘)).pipe(gulp.dest(‘publish/template/‘));

  return gulp.src([‘publish/css/*.css‘,‘publish/scripts/config.js‘,‘publish/images/**/*‘],base: ‘publish‘)
        .pipe(plugins.rev())
        .pipe(gulp.dest(‘publish/‘))
        .pipe(plugins.rev.manifest(
          merge: true
        ))
        .pipe(gulp.dest(‘publish/‘));
);


gulp.task("publish", ["revision"],function()
  var manifestCss = gulp.src("publish/rev-manifest.json"),
      manifestDownload = gulp.src("publish/rev-manifest.json"),
      manifest = gulp.src("publish/rev-manifest.json");

  gulp.src(‘publish/css/*.css‘)
    .pipe(plugins.revReplace(manifest: manifest))
    .pipe(gulp.dest(‘publish/css/‘));
 
  gulp.src(‘*.html‘)
    .pipe(plugins.revReplace(manifest: manifestCss))
    .pipe(gulp.dest(‘publish/‘));

  gulp.src(‘publish/download/*.html‘)
    .pipe(plugins.revReplace(manifest: manifestDownload))
    .pipe(gulp.dest(‘publish/download/‘));
);

上面是我曾经自己配置的一个打包构建gulpfile,里面做了上述我提到的所有事情,除了js模块化打包之外,这个大家可以自己研究下,比较简单。我来解释下各个任务的作用。

  • default, 主要是监听less变化生成css。

  • clean, 清除掉publish文件夹的内容

  • bulid,把源码移动到publish文件夹下面,对于一些类型的文件做处理,例如css的压缩,js的压缩,图片的压缩缓存等等。

  • revision,md5文件,根据html,css的引用来给相关的文件添加md5戳,生成新的md5戳文件,来保持文件更新。

  • publish,根据上面 revision生成的新的md5文件来做一次文件替换,替换里面js,css,image的引用路径。

其实有些地方可以优化的,这个大家有时间可以自己去试试。

以上就是这个系列的第一篇文章,欢迎吐槽和讨论各种问题,第二篇文章会以Webpack为主,来解释它的配置方案。

编辑器vscode的web前端(html,css,javascript)开发环境打造(代码片段)

1、安装VScode和浏览器VScode安装:https://code.visualstudio.com/Chrome安装:https://www.google.com/intl/zh-CN/chrome/node.js安装:https://nodejs.org/zh-cn/download/Web前端开发主要包括html,css࿰ 查看详情

波尔原子模型:一段令人愉悦的历史(代码片段)

波尔的原子理论  波尔的原子理论 01波尔原子模型BohrModel:ADelightfulHistory[CC]一、前言  尼尔斯·波尔在其晚年曾谈到, 直到1913年人们对于氢气燃烧的光线中的物理规律还是一无所知,尽管它的谱线满足一定的模式... 查看详情

riot.js教程简介

...令人愉悦的语法,优雅的API和非常小的体积;为什么需要一个新的界面库前端开发框架的确已经非常多了,但还是没有令人足够满意的东西,reactjs貌似是来解决问题的,但是用过的人都知道,它有很多令人不爽的弱点,我们相... 查看详情

打造超级舒适的go开发环境之vim配置(代码片段)

最近博主已经从VIM迁移到了EMACS作为主要生产工具,目的是为了学习Lisp和体验EMACS操作系统之美,哈哈,不要被我弄的技术焦虑,没错,我就是换了个吃饭的盘子。写下这篇博客也是为了纪念我顺利的“从VIM毕业了”。在阅读本... 查看详情

如何打造一个"逼格"的web前端项目

...,重新了解了前后端分离,前端工程化等概念学习,思考如何打造一个“逼格”的web前端项目。     前端理论篇    前端代码规范:制定前端开发代码规范文档。       &nb 查看详情

windows上使用vagrant打造laravelhomestead可协同跨平台开发环境

http://www.itkeyword.com/doc/38639940209225915181、简介Laravel 致力于让整个PHP开发过程变得让人愉悦,包括本地开发环境,为此官方为我们提供了一整套本地开发环境——Laravel Homestead。LaravelHomestead是一个打包好各种Laravel开发所需... 查看详情

利用windowshyper-v创建linux虚拟机,打造个人开发环境(代码片段)

静态IP#创建一个内部的虚拟机交换机(附带会创建一个虚拟网卡)New-VMSwitch-SwitchName"NAT-VM-CentOS"-SwitchTypeInternal#查看虚拟网卡NAT-VM的ifindexGet-NetAdapterGet-NetAdapter-Name"*NAT-VM-CentOS*"|Format-List-Property 查看详情

使用virtualbox+vagrant打造统一的开发环境(代码片段)

https://blog.csdn.net/openn/article/details/54927375配置步骤安装VirtualBox虚拟系统运行在VirtualBox中,类似的工具还有VMware,但后者是收费的。VirtualBox下载地址:https://www.virtualbox.org/wiki/Downloads.它支持多个平台,请根据自己的情况选择对应的... 查看详情

markdown有用的gulp插件的精选列表,用于令人敬畏和简单的前端web开发。(代码片段)

查看详情

基于react+如何搭建一个完整的前端框架(代码片段)

 1.使用create-react-app快速构建React开发环境  create-react-app是来自于Facebook,通过该命令我们无需配置就能快速构建React开发环境。  create-react-app自动创建的项目是基于Webpack+ES6。  执行以下命令创建项目:  $cnpminstall-g... 查看详情

在ubuntu上打造方便好用的python开发环境(代码片段)

http://blog.csdn.net/a464057216/article/details/52070922我使用的是Ubuntu14.04LTS,按照我的操作步骤做完,终端Terminal的使用效果如下:vim编辑Python文件时使用效果如下:安装oh-my-zshShell是Linux内核与用户通信的接口,种类很... 查看详情

使用vite和typescript带你从零打造一个属于自己的vue3组件库

...n等等。但是作为一个前端开发者,你知道一个UI组件库是如何被打造出来的吗?读完这篇文章你将学会:如何使用pnpm搭建出一个Monorepo环境如何使用vite搭建一个基本的Vue3脚手架项目如何开发调试一个自己的UI组件库如何使用vite打... 查看详情

如何打造支撑多种视频播放诉求的大前端播放器?(代码片段)

VideoX是内容前端团队基于电商业务(以下简称大淘宝)背景打造的面向大终端场景的前端播放器。这篇文章谈谈我对播放器领域问题的认识,以及当下解决这些问题的思路。大淘宝视频播放的场景有哪些?大淘宝... 查看详情

前端开发调试之代理配置(代码片段)

...在本地调试环境和线上环境之间灵活切换,以将要调试的一个页面为例,页面引用了如下的静态资源,要想在本地开发调试下面引入的js代码,最直接的方法是在把引入的资源路径改成本地调试路径,并起一个本地服务器访问页... 查看详情

bzoj2157旅游(代码片段)

题目描述Ray乐忠于旅游,这次他来到了T城。T城是一个水上城市,一共有N个景点,有些景点之间会用一座桥连接。为了方便游客到达每个景点但又为了节约成本,T城的任意两个景点之间有且只有一条路径。换句话说,T城中只有N... 查看详情

如何破解intellijidea

《IntelliJIDEA2020.1中文破解版》百度网盘资源免费下载:链接:https://pan.baidu.com/s/1jTnXfDaZEBktKGct12eLYg?pwd=a97z提取码:a97z IntelliJIDEA2020.1是由Jetbrains公司而打造的一款Java集成开发环境,该软件界面简洁美观,操作使用方便,拥有智能... 查看详情

[国家集训队]旅游(代码片段)

Ray乐忠于旅游,这次他来到了T城。T城是一个水上城市,一共有N个景点,有些景点之间会用一座桥连接。为了方便游客到达每个景点但又为了节约成本,T城的任意两个景点之间有且只有一条路径。换句话说,T城中只有N?1座桥。R... 查看详情

打造你的开发神器——介绍androidstudio上的几个插件(代码片段)

这个月因为各种事情在忙,包括赶项目,回老家,还有准备旅游的事,所以应该写不了四篇博客了。今天介绍一下关于AndroidStudio的几个好用的插件,都是我在用的,它们或能帮你节省时间,或者让你心... 查看详情