从客户端到前端入门总结

从客户端到前端入门总结

一. 概述

笔者是客户端研发出身,如果只有一门技术傍身,不足以胜任市场对客户端研发的要求,于是想学习大前端技术栈。但苦于日常工作繁琐,一直没有机会学习(其实就是自身懒惰)。直到工作需要,需要写一个微信小程序,这才下决心学习前端技术。其实如果想入门前端,从微信小程序入手不失为一个好的方法。初次接触微信小程序,它的数据双向绑定机制,让写习惯了客户端的我叹为观止。目前我入门前端的技术路径是:客户端---微信小程序---混合App---H5。一些我自己的经验总结出来,希望对你有所帮助。当然阅读这篇文章的前提是,你已经了解了基本的Html、CSS、JS语法。

二. 环境与工具

1. 前端环境搭建

笔者使用的Mac电脑,所有的环境搭建工作都是基于Mac电脑来操作的。首先安装node.jsnpm:

node.js

node 是一个基于 V8 引擎的 Javascript 运行环境,它使得 Javascript 可以运行在服务端,直接与操作系统进行交互,与文件控制、网络交互、进程控制等。简单的说node.js就是运行在服务端的 JavaScript。你可能会有疑问,我写前端页面为甚么需要一个运行在服务端的的JS环境。其实我们这里使用node最关键是需要安装npm.

npm

npm是node.js的包管理工具(package manager),为啥我们需要一个包管理工具呢?因为我们在Web开发时,会用到很多别人写的JavaScript代码。如果我们要使用别人写的某个包,每次都根据名称搜索一下官方网站,下载代码、解压、再使用,非常繁琐。于是一个集中管理的工具应运而生:大家都把自己开发的模块打包后放到npm官网上,如果要使用,直接通过npm安装就可以直接用。他类似于iOS开发中的cocoapods,Android开发中的Maven,这样就好理解了。
node下载地址点击这里,按照步骤安装完成后,终端输入

node -v
npm -v

查看安装版本,出现下面的版本号说明安装成功。


node

注意如果提示-bash: node: command not found,说明还需要配置一下环境变量。配置方式也很简单,在Finder中查找文件夹,输入路径/private/etc,找到profile文件,加上一下语句

pic
export NODE_HOME="node安装路径(bin路径的父级路径)" 
export PATH=$PATH:$NODE_HOME/bin

node安装路径(bin路径的父级路径):你可以通过命令which node 命令来查看。例如我的本地路径是/usr/local/bin/node,那么可以这样设置

export NODE_HOME="/usr/local"
export PATH=$PATH:$NODE_HOME/bin

重新保存文件后,再次输入node -v 验证一下。下面是一些npm常用命令:

// 本地安装模块
npm install <Module Name>
// 全局安装模块
npm install <Module Name> -g
// 搜索模块
npm search  <Module Name>
// 更新模块
npm update <Module Name>
//卸载模块
npm uninstall <Module Name>
// 安装项目的全部依赖
npm install
yarn:

yarn是一个由 Facebook 贡献的 Javascript 包管理器。yarn是为了弥补npm的一些缺陷而出现的。在日常开发中你可以使用npm也可以使用yarn进行包的管理,只不过相比npm而言,它的速度更快,并提供了离线模式。关于它我们不会过多的介绍,你可以去它的中文网站查看.它的安装方式也很简单,直接通过Homebrew进行安装,命令 brew install yarn. 它的一些常用指令:

// 初始化一个新项目
yarn init
// 添加依赖包
yarn add [package]
// 添加依赖包的某个版本
yarn add [package]@[version]
// 升级依赖包
yarn upgrade [package]
// 移除依赖包
yarn remove [package]
// 安装项目的全部依赖
yarn install 或者 yarn

可以在项目中混用yarnnpm,但是最好不要这样。

2. 开发工具选择

pic1

前端的开发工具基本就两个选择Visual Studio Code 或者 WebStorm,两者选择哪一个都可以,我个人更喜欢Visual Studio Code,其实选择它最主要原因是免费且开源,而且有强大的插件库。

VSCode安装插件:

chanjian

选择[扩展]-[搜索插件]-安装即可
下面是我使用的一些常用的VSCode插件:

(1) vue vscode snippets
它是Vue项目代码的骨架插件,例如输入vbase,会直接生成以下代码

<template>
    <div>

    </div>
</template>

<script>
    export default {
        
    }
</script>

<style lang="scss" scoped>

</style>

相似的还有vdatavmethodvfor等操作
(2) Auto Close Tag 自动闭合HTML标签
(3) Auto Rename Tag 修改HTML标签时,自动修改匹配的标签
(4) Color Highlight 颜色值在代码中高亮显示
(5) HTML CSS Class Completion CSS class提示插件
(6) Vetur Vue多功能集成插件,包括:语法高亮,智能提示,emmet,错误提示,格式化,自动补全,debugger。vscode官方钦定Vue插件,Vue开发者必备
(7) VSCode-icons 文件图标,方便定位文件
(8) Color Highlight 颜色值在代码中高亮显示
(9) HTML CSS Support 智能提示CSS类名以及id
(10) Beautify 格式化代码工具,美化javascript,JSON,CSS,Sass,和HTML
(11) Open in Browser 直接在浏览器中打开你当前的文件

三.Vue项目搭建与开发事项

目前前端几大主流框架ReactVueAngular,三个框架各有优劣,个人感觉Vue的入门难度最小,而且有良好的中文教程和广泛的第三方支持,如果要入门前端技术,从Vue入手是比较明智的。

1.Vue项目搭建

使用Vue CLI脚手架构建Vue项目

(1). 使用 npm 或 yarn 全局安装 Vue CLI
npm install -g @vue/cli
# OR
yarn global add @vue/cli

如果页面报错如下

error

说明执行权限不够,可以在在前面加sudo

sudo npm install -g @vue/cli

执行完成后输入命令vue -V查看Vue/Cli 版本,出现如下提示说明安装成功。

pic

(2). 在工程所在目录创建项目

执行以下命令

vue create my-project
# OR
vue ui

vue create 是使用命令行创建项目,vue ui是以图形化界面创建和管理项目。

(3). 配置工程

输入创建命令后提示:


pic

此时会判断你的npm/yarn源的连接速度,询问你是否切换至淘宝镜像,我们输入n,继续

pic

提示:项目是使用默认配置(Vue2还是Vue3 都包含babel, eslint)还是手动选择,我们选择手动配置,继续

pic
  • Choose Vue version: 选择Vue的版本 选择
  • Babel :将脚手架中浏览器不认识的一切东西翻译为浏览器认识的 选择
  • TypeScript : 强类型的 JaveScript
  • Progressive Web App (PWA) Support : 渐进式App,主要用于兼容移动端
  • Router : Vue 路由管理 选择
  • Vuex: Vue的状态管理器 选择
  • CSS Pre-processors : CSS 预处理器,可选择使用 less、sass、stylus等预处理器 选择
  • Linter / Formatter :代码检测和格式化
  • Unit Testing: 单元测试
  • E2E Testing: 端到端测试
    选中好后继续

按方向键是进行上下移动,空格是选中/取消,回车是确定当前所选内容,继续下一步操作

pic

提示:选择Vue版本,我们选择Vue3版本,继续

pic

提示:路由方式是否使用history模式。一般都是单页面开发不选择history,输入n继续

pic

提示:选择CSS预处理器

  • node-sass 是自动编译,实时的
  • dart-sass 需要保存后才会生效
  • Less 最终会通过编译处理输出css到浏览器,Less 既可以在客户端上运行,也可在服务端运行 (借助 node.js)
  • Stylus 主要用来给node项目进行CSS预处理支持,Stylus功能上更为强壮,和Js联系更加紧密,可创建健壮的、动态的的CSS

我们选择 Sass/SCSS (with node-sass),继续

pic

提示:Babel, ESLint是使用独立文件,还是在package.json一个文件中保存所有配置信息。选择第一个,继续

pic

提示:是否为以后创建的项目保存我们当前所选的这些配置,我们选择,开始自动创建项目

pic

项目创建完成后,cd到当前工程目录下,执行yarn serve,就可以运行当前项目了。

pic

在浏览器中输入上面的地址就可看到我们当前创建的Vue工程了

pic

至此,我们整个工程创建完成。接下来总结一下在移动Web开发中常用的三方库。

2.第三方库使用总结

(1).移动Web布局库

我们在进行移动Web页面开发时,需要对页面进行布局,常用的布局方式有用rem来作单位,配合h5新的meta属性来适配屏幕做开发的,也有直接使用三方库postcss-px-to-viewport来进行页面布局的。我们直接使用第二种方式:
使用yarn进行安装,cd 到工程目录后执行

$ yarn add -D postcss-px-to-viewport

执行完成后,在postcss.config.js中进行参数配置

module.exports = {
  plugins: {'postcss-px-to-viewport': {
    unitToConvert: 'px',// 要转化的单位
    viewportWidth: 375,// UI设计稿的宽度
    unitPrecision: 5,// 转换后的精度,即小数点位数
    propList: ['!*'],// 指定转换的css属性的单位,*代表全部css属性的单位都进行转换
    viewportUnit: 'vw',// 指定需要转换成的视窗单位,默认vw
    fontViewportUnit: 'vw',// 指定字体需要转换成的视窗单位,默认vw
    selectorBlackList: [],// 指定不转换为视窗单位的类名,
    minPixelValue: 1,// 默认值1,小于或等于1px则不进行转换
    mediaQuery: false,// 是否在媒体查询的css代码中也进行转换,默认false
    replace: true,// 是否转换后直接更换属性值
    exclude: [],// 设置忽略文件,用正则做目录名匹配
    landscape: false,// 是否处理横屏情况
    landscapeUnit: 'vw',//横屏单位
    landscapeWidth: 568//横屏宽度
  }}
}
(2). UI库
pic

在进行移动Web开发中,第三方UI库的使用是少不了的,我们最常用的有vantElement UI等,我们以vant来说明,进行工程目录执行

# Vue 2 项目,安装 Vant 2:
npm i vant -S

# Vue 3 项目,安装 Vant 3:
npm i vant@next -S

# 通过 yarn 安装vant3
yarn add vant@next

注意对于Vue2和Vue3项目引入方式是不一样的,我们是Vue3项目,因此执行npm i vant@next -S或者yarn add vant@next

安装完成后就可以引入组件了,也需要注意,Vue2与Vue3的配置方式也是不同的,具体可以去查看Vant官网查看,这里不在赘述。

(3). 网络请求库

在项目中进行网络请求时,最常用的第三方库是axios,他的引入方式也很简单:

$ npm install axios
OR 
$ yarn add axios

对于Vue2项目而言安装完成后在mian.js中引用axios,并绑到原型链上。使用插件的时候,一般要在入口文件main.js中引入,因为mian.js是项目首先运行的文件:

import Vue from 'vue'
import axios from ‘axios’
Vue.prototype.$http = axios

它的用法很简单:

// get请求
axios.get('/user?ID=12345')
  .then(function (response) {
    console.log(response);
  })
  .catch(function (error) {
    console.log(error);
  });
// post 请求
axios.post('/user', {
    firstName: 'Fred',
    lastName: 'Flintstone'
  })
  .then(function (response) {
    console.log(response);
  })
  .catch(function (error) {
    console.log(error);
  });
// 执行多个并发请求
function getUserAccount() {
  return axios.get('/user/12345');
}

function getUserPermissions() {
  return axios.get('/user/12345/permissions');
}

axios.all([getUserAccount(), getUserPermissions()])
  .then(axios.spread(function (acct, perms) {
    // 两个请求现在都执行完成
  }));

但是对于Vue3项目而言,除了引入axios外,还需要引入vue-axios,引入方式:

$ npm install --save axios vue-axios

vue-axios是将axios集成到Vue.js的小包装器,可以像插件一样进行安装。在mian.js中引用axios,vue-axios,通过全局方法Vue.use()使用插件:

import { createApp } from 'vue'
import axios from 'axios'
import VueAxios from 'vue-axios'// Vue3 使用 axios 需要配合 vue-axios 一起使用

// 全局引入组件
createApp(App).use(VueAxios, axios).mount('#app');

使用方法:

export default {
  name: 'App',
  methods: {
    getList() {
      this.axios.get(api).then((response) => {
        console.log(response.data)
      })
      // or
      this.$http.get(api).then((response) => {
        console.log(response.data)
      })
    }
  }
}
(4).项目中的图片使用

在开发项目时,免不了要使用到图片,目前项目常用的矢量图片库非阿里的iconfont莫属了,它最大的好处是你可以像调整文字一样,设置图片的颜色和大小,而不用担心图片失真问题。它的使用方式也很简单:
把我们要使用的图片添加到项目中,然后点击下载到本地

pic

它有三种引入方式分别是:unicode 引用font-class 引用symbol 引用,我们只介绍symbol 引用,这也是官方最推荐的引用方式,相比前两种有如下特点:

  • 支持多色图标了,不再受单色限制。
  • 通过一些技巧,支持像字体那样,通过font-size,color来调整样式。
  • 兼容性较差,支持 ie9+,及现代浏览器。
  • 浏览器渲染svg的性能一般,还不如png。
    使用步骤如下:
第一步:拷贝下载文件iconfont.js到项目目录

在需要用到iconfont 的地方引入这个js文件目录

import '../utils/iconfont';
第二步:加入通用css代码(引入一次就行)
<style type="text/css">
    .icon {
       width: 1em; height: 1em;
       vertical-align: -0.15em;
       fill: currentColor;
       overflow: hidden;
    }
</style>
第三步:挑选相应图标并获取类名,应用于页面:
<svg class="icon" aria-hidden="true">
    <use xlink:href="#icon-xxx"></use>
</svg>

#icon-xxx 就是你选的图片类名
如果要调整大小、颜色、位置等

.icon {
  font-size: 30px;
  color: orange;
  position:relative;
  display:inline-block;
  top: calc(12px + 0.15rem);
  right: 6px;
}

注意:加入的图片最好是去掉填充色的,然后你才能修改颜色,否则设置颜色不生效。

四.总结

转眼做前端已经小半年了,越学习越感觉前端内容的复杂,越感觉自己所学知识的浅薄,写这篇文章也算是对这段时间的总结。关于ESlint的使用可以参考这个文章
参考:
postcss-px-to-viewport
element UI
axios
iocnfont
https://v3.cn.vuejs.org/
https://cli.vuejs.org/zh/guide/

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,185评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,445评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,684评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,564评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,681评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,874评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,025评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,761评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,217评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,545评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,694评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,351评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,988评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,778评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,007评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,427评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,580评论 2 349

推荐阅读更多精彩内容