仿B站项目——(1)计划,前端工程
计划
现打算:
- 计划用webpack打包 + 模板语言 + jquery + jquery ui + bootstrap做一个仿B站的静态网站。
- 网站兼容手机浏览器端。
- 部分模块打算仿照SPA用js加载的方式实现。
- 数据结构要有方便配置的形式。(便于网站更新)
- 网站优化,目前打算用图片懒加载等方法。
- 最终结果要与B站90%相同,包括动画,互动等,不包括用户登录,视屏播放等(因为要服务器支持)。
后续打算:
- 网站用vue重构。
- 把网站做成一个webapp。
- 添加服务端。
前端工程
参考前端工程说明的方法来用工程方法构建项目。
项目目的与需求
- 熟悉前端工程化流程。
- 沿路学习前端工程化所需要的知识。
技术选型
html模板引擎
如果项目使用到 React/Vue/Angular 其中一个,则完全不需要HTML模板引擎。否则可以选择 ejs pug(jade) handlebars 等模板引擎。
个人考虑:我打算先学习一下模板引擎,所以先不用React/Vue/Angular,等之后熟悉了模板引擎之后再重构。我选择ejs模板引擎,原因是它很小巧,我也只需要它来向html中填充数据而已。
css预处理
主流的有 less sass stylus
由于sass(scss)用的人更多,而且腾讯Alloy团队代码规范用的scss,所以我打算用scss。
css框架
毫无疑问用Bootstrap,我也想深入学习一下Bootstrap。
js框架
由于先不使用React/Vue/Angular,我选择使用jQuery。
es6和js超集
用es6是肯定的了。先不打算用js超集,因为用的人还很少,不是太稳定。
兼容性
并不打算兼容ie8及以下,也不打算兼容低版本浏览器。
流程规范
规范选择
- 除了缩进,其它使用腾讯Alloy团队的代码规范。(我的js缩进是2个空格)
- 使用基于树结构的CSS命名规范。
- 使用normalize.css而不是reset.css。
- 使用nec的命名规则
实际情况制定规范
(1)所有m/文件夹下的css都要以.m-作为前缀。这样看到一个class如果是.m-box则直接去找m/box/index.css,看到.some则直接找HTML同级目录的css文件。
(2)约定完全不要使用ID选择器,class 选择器使用 .m-box-hd-title {} 这种结构命名法降低权重。保持大部分选择器权重都是 0, 0, 1, 0。
(3)有时删除了一个 class ,JS 绑定的事件就失效了,则可以将所有用于 JS 选择的 class 都以 .js- 作为前缀。例如: .js-submit .js-list-remove。
仿B站项目——(1)计划,前端工程的更多相关文章
- 仿B站项目——(2)环境配置,文件目录
环境配置 主要参考入门Webpack,看这篇就够了,webpack入门和webpack实用配置. 实用开发环境 利用下面的webpack.json和webpack.config.js可以搭建一个使用e ...
- 仿B站项目(4)webpack打包第三方库jQuery
概述 在项目中不可避免的会用到jquery等第三方库,来看看有什么问题,怎么解决. 遇到的问题 一般情况下,直接require第三方库,比如jquery,然后webpack会自动把第三方库打包进bun ...
- 仿B站项目(3)页面配置
页面配置 B站有很多页面,比如说首页啊,动画页啊,音乐页啊,舞蹈页啊,那就从首页开始. 通过观察首页,可以看见有很多模块除了内容之外,在布局颜色等方面都是一样的,所以我可以开发一些模板或者插件,到时候 ...
- 前端工程模块化——以一个php项目为例
实现一个页面功能总是需要 JavaScript.CSS 和 Template 三种语言相互组织,所以我们真正需要的是一种可以将 JavaScript.CSS 和 Template 同时都考虑进去的模块 ...
- 阶段5 3.微服务项目【学成在线】_day02 CMS前端开发_16-CMS前端工程创建-导入系统管理前端工程
提供了基于脚手架封装好的前端工程 H:\BaiDu\黑马传智JavaEE57期 2019最新基础+就业+在职加薪\阶段5 3.微服务项目[学成在线]·\day02 CMS前端开发\资料\xc-ui-p ...
- SpringBoot+Vue豆宝社区前后端分离项目手把手实战系列教程01---搭建前端工程
豆宝社区项目实战教程简介 本项目实战教程配有免费视频教程,配套代码完全开源.手把手从零开始搭建一个目前应用最广泛的Springboot+Vue前后端分离多用户社区项目.本项目难度适中,为便于大家学习, ...
- 前端工程优化:javascript的优化小结
我觉得优化javascript是一门高深的学问,在这里也只能站在前人的肩膀上,说一些我浅显的认识,更希望的是抛钻引玉,如有不对,敬请斧正. 首先,要认识到是,优化js的关键之处在于,优化它的运行速度 ...
- 前端工程筹建NodeJs+gulp+bower
1.安装nodejs nodejs 官网下载安装文件 安装完成之后,在命令窗口执行,(显示nodejs版本) 和(显示npm版本)可以使用这两个命令查看是否安装成功: node -v npm -v 2 ...
- 前端工程搭建NodeJs+gulp+bower
需要node.npm的事先安装!! 1.nodejs安装程序会在环境变量中添加两个变量: 系统环境变量中:path 增加C:\Program Files\nodejs\ 因为在该目下存在node.ex ...
随机推荐
- Python : *args和**kwargs是什么东东呢?
def foo(*args, **kwargs): print 'args = ', args print 'kwargs = ', kwargs print '------------------- ...
- tfs填坑那些事
1.csdn下载 安装(步1:装 步2:激活 步3:配置数据库之类 选择完全配置)激活(win7能出来,win10不出来) 注意 tfs服务开启,,代理服务开启 2.选择敏捷模板 3.无法新建项目, ...
- netty(一) netty有哪几部分构成
netty netty是一个支持高并发的非阻塞I/O框架. Channel Channel 是 NIO 基本的结构.它代表了一个用于连接到实体如硬件设备.文件.网络套接字或程序组件,能够执行一个或多个 ...
- 5. Longest Palindromic Substring 返回最长的回文子串
[抄题]: Given a string s, find the longest palindromic substring in s. You may assume that the maximum ...
- [leetcode]59. Spiral Matrix II螺旋遍历矩阵2
Given a positive integer n, generate a square matrix filled with elements from 1 to n^2 in spiral or ...
- java_21 Set接口、HashSet类、LinkedSet类
1Set 包含不可重复元素的集合,是一个无序集合. 子类:hashSet .LinkedSet 2.含有父类Collection的方法 add(): 如果 set 中尚未存在指定的元素,则添加此元素( ...
- android 设置LOGO和app名称
mipmap和drawable目录都可以存放图片,一般情况下,将LOGO文件存放在mipmap目录,普通图片放到drawable目录. 一.在mipmap目录添加LOGO图片 在mipmap目录右键- ...
- 特殊篮子问题——C语言暴力破解
You are given N baskets of gold coins. The baskets are numbered from 1 to N. In all except one of th ...
- TUN/TAP编程实现
其实关于这两种设备的编程,基本上属于八股文,大家一般都这么干. 启动设备之前 有的linux 并没有将tun 模块编译到内核之中,所以,我们要做的第一件事情就是检查我们的系统是否支持 TUN/TAP ...
- shell脚本语法学习
以下内容仅为个人学习使用,如有错误,欢迎指出 持续更新............... 一.首先创建.sh文件,打开并在文件的第一行输入#!/bin/sh 执行shell文件命令为: . filenam ...