年终福利

WEB前端开发工程师 年终福利(二、前端和服务端)

2019-01-09  本文已影响0人  吴佳浩

Vue、react、 Angular、主流框架和服务器相关问题

        ng-app 指令用于告诉 AngularJS 应用当前这个元素是根元素。

        所有 AngularJS 应用都必须要要一个根元素。

        HTML 文档中只允许有一个 ng-app 指令,如果有多个 ng-app 指令,则只有第一个会被使用。
        MVC全名是Model View Controller。是Controller模型(model)-视图(view)-控制器(controller)的缩写

        MVVM是Model-View-ViewModel的简写
    在Node.js中-g表示全局安装模块
        元素(E)、属性(A)、类(C)、注释(M)
        $scope 对象在 AngularJS 中充当数据模型的作用,也就是一般 MVC 框架中 Model 得角色.但又不完全与通常意义上的数据模型一样,因为 $scope 并不处理和操作数据,它只是建立了视图和 HTML 之间的桥梁,让视图和Controller 之间可以友好的通讯.
        自定义指令里的scope表示指令的作用域,它有三个可选值:true、false、对象{}
        Ionic也是基于Angular的,使用的是ui-router,

        ui-router的核心理念是将子视图集合抽象为一个状态机,导航意味着 状态的切换,Ionic之所以没有使用Angular官方的ngRoute,是回ngRoute缺少一些高级的特性,比如视图命名,视图嵌套。
        过滤器 对数组中的每一项运行给定函数,返回该函数会返回true 的项组成的数组。
        let even=array.filter(item=>{//获取数组中偶数

        return (item%2===0)

        })

        ng-bind 指令告诉 AngularJS 使用给定的变量或表达式的值来替换 HTML 元素的内容。
        如果给定的变量或表达式修改了,指定替换的 HTML 元素也会修改。
         
        link中可以拿到scope和controller,可以与scope进行数据绑定,与其他指令进行通信。
        Angular倡导以测试驱动开发,在的service或者controller中出现了DOM操作,那么也就意味着的测试是无法通过的
        使用Angular的其中一个好处是啥,那就是双向数据绑定,这样就能专注于处理业务逻辑,无需关系一堆堆的DOM操作。如果在Angular的代码中还到处充斥着各种DOM操作,那为什么不直接使用jquery去开发呢
        angular对常用的dom事件,xhr事件等做了封装, 在里面触发进入angular的digest流程。
        在digest流程里面, 会从rootscope开始遍历, 检查所有的watcher
    Promise:
        Promise是ES6 也就是js 2015中提出的新的Api 本质是为了解决JavaScript的回调地狱问题,相当于一个异步处理容器
        promise.then(res=>{})接收promise容器内部resolve状态返回的值作为参数在.then回调中接收,
        promise.catch(err=>{})接收的是promise容器内部reject状态返回的值作为参数在.catch回调当中接收
    async awiat:
        ES8 标准引入了 async 函数,使得异步操作变得更加方便。
        async 函数是什么?一句话,它就是 Generator 函数的语法糖。
        简而言之申明一个async 函数 内部用await将函数内部的异步操作顺序执行 ,
        不需要像generator一样生成一个iterator迭代器 在.next()的去手动的次序执行,
        而现async与语法糖已经帮你顺序执行完成了上述的操作。async对异步的封装就更加简洁明了
        AngularJS的ng-route模块为控制器和视图提供了[Deep-Linking]URL
        ui-router的核心理念是将子视图集合抽象为一个状态机,导航意味着 状态的切换。
        指令是指示计算机执行某种操作的命令,它由一串二进制数码组成。一条指令通常由两个部分组成:操作码+地址码。
        angularjs 中可通过三种($provider,$factory,$service)方式自定义服务
        通过 gulp.task方法定义任务,在项目中新建gulpfile.js文件,书写代码,如:

        var gulp = require(‘gulp’)

        gulp.tasks(

        ‘script’ // 任务名

        ,function(){

          // 在这里写任务需要执行的代码

        });

在命令输入gulp 任务,可以执行所在目录gulpfile.js文件中的任务。

        12列

        .col-xs- 超小屏幕手机 (<768px)
        .col-sm- 小屏幕平板 (≥768px)
        .col-md- 中等屏幕桌面显示器 (≥992px)
        .col-lg- 大屏幕大桌面显示器 (≥1200px)
        当数据出现没有经过angular但是发生改变的情况下,需要调用apply。Apply的范围比较广,只执行一次,但是digest针对某一元素执行多次。
         Show/hide是显示隐藏,if是是否存在某一部分
        在React中,render执行的结果得到的并不是真正的DOM节点,结果仅仅是轻量级的JavaScript对象,我们称之为virtual DOM。虚拟dom
        需要理解的是,props是一个父组件传递给子组件的数据流,这个数据流可以一直传递到子孙组件。而state代表的是一个组件内部自身的状态(可以是父组件、子孙组件)。
        Redux 把一个应用程序中,所有应用模块之间需要共享访问的数据,都应该放在 State 对象中。这个应用模块可能是指 React Components,也可能是你自己访问 AJAX API 的代理模块,具体是什么并没有一定的限制。State 以 “树形” 的方式保存应用程序的不同部分的数据。这些数据可能来自于网络调用、本地数据库查询、甚至包括当前某个 UI 组件的临时执行状态(只要是需要被不同模块访问)
        http、fs、path、url、Buffer、process
        NPM便于JavaScript开发者共享和重用代码,它可以很容易地更新你的代码;再分享。是全球最大的开源库生态系统。

        SPM是淘宝社区电商业务(xTao)为外部合作伙伴(外站)提供的一套跟踪引导成交效果数据的解决方案。

        Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境。Node.js 使用了一个事件驱动、非阻塞式 I/O 的模型,使其轻量又高效。
        它使我们能够在本地运行javascript
        将你要拷贝上传的文件使用tar -cf config.tar config/ 将congfig文件夹整个打包成tar 文件
        使用 scp config.tar wujiahao@47.98.21.341:/demo/
        #解读这句话  将打包好的config.tar 文件上传到用户为wujiahao公网ip为47.98.21.341下的demo文件夹下
        #主要就是scp命令的使用
    Apache 设置虚拟主机 
    设置网站域名
    设置站点根目录
    设置根站点默认访问文件
        提供了网站开发的常用模块:处理用户请求、操作数据库、模板渲染、配置文件管理等
      Node采用一系列“非阻塞”库来支持事件循环的方式。本质上就是为文件系统、数据库之类的资源提供接口。
      Node.js 使用事件驱动,非阻塞I/O 模型而得以轻量和高效,非常适合在分布式设备上运行数据密集型的实时应用。
     //react
     componentWillMount(初始化)
     componentDidUpdate(更新)
    componentWillUnmount(卸载)
    //Vue
    created(创建)
    mouted(挂载)
    updated(更新)
//Vue
1、修改config/index.js里proxyTable
    proxyTable: {
      // 前端的请求代理转发    start
      '/': {
        target: 'http://127.0.0.1:9090',//设置你调用的接口域名和端口号 别忘了加http
        changeOrigin: true,
        pathRewrite: {
          '^/': '/'//这里理解成用‘/’代替target里面的地址,后面组件中我们掉接口时直接用api代替 比如我要调用'http://40.00.100.100:3002/user/add',直接写‘/user/add’即可
        }
      }
      // 前端的请求代理转发    end
    },
2、修改config/dev.env.js

module.exports = merge(prodEnv, {
    NODE_ENV: '"development"',
    API: '"/"' // 加入这一句
})
//React 在package.json当中加入一条proxy 将请求通过webpack转发到你想要请求的地址
  "proxy": "http://localhost:9090"
//Vue
1、更具功能创建多个store   
2、将多个store导入到一个modules当中
3、在用到相对应的值的时候这么取,比如取demo1state中的d1
import { mapState } from 'vuex'
 computed:mapState({
      d1: state =>state.demo1.d1
  })
如果要用这个值d1 和data当中的状态一样取即可
//react
//合并所有的reducer 并且返回
import {combineReducers } from 'redux'
import {user} from './redux/user.redux'//执行用户登陆的操作
import {chatuser} from './redux/chatuser.redux'//执行用户获取列表的操作
export default combineReducers({user,chatuser})

上一篇下一篇

猜你喜欢

热点阅读