函数依赖

前端模块化

痞子三分冷 提交于 2019-12-30 00:58:40
前端模块规范有三种:CommonJs,AMD和CMD。 CommonJs用在服务器端,AMD和CMD用在浏览器环境 AMD 是 RequireJS 在推广过程中对模块定义的规范化产出。 CMD 是 SeaJS 在推广过程中对模块定义的规范化产出。 AMD:提前执行(异步加载:依赖先执行)+延迟执行 CMD:延迟执行(运行到需加载,根据顺序执行) 一.模块 以前使用JS的方式要更改,以前只能说是JS的最初级应用,现在对JS应该使用模块化写法. 好处: 模块就是实现特定功能的文件,把几个函数放在一个文件里就构成了一个模块。需要的时候加载这个文件,调用其中的函数即可。 但这样做会污染全局变量,无法保证不与其他模块发生变量名冲突,而且模块成员之间没什么关系。 简单的例子: var module = (function(){     var star = 0;     var f1 = function (){       alert('ok');     };     var f2 = function (){       //...     }; return { f1:f1, f2:f2 };   })(); module.f1(); //ok alert(module.star) //undefined 因为start并没有return出来 二.CommonJs

makefile 速成

六眼飞鱼酱① 提交于 2019-12-28 07:10:24
分享一篇前短时间总结的makefile速成,教你一天搞定makefile,略加实践掌握其最核心部分。 可以从下面的几个维度来学习和理解makefile: 规则 变量 函数 命令 make 的命令选项 一个大型项目的makefile例子 make –p的输出概览 在正式介绍makefile的以上四个方面之前,首先一句话概括一下makefile是什么:makefile是用来描述文件依赖关系,并告诉make命令如何根据这种依赖关系,调用shell完成目标文件建立的文件。 makefile 的执行时通过两步来完成的,第一步是扫描文件中的依赖关系,并藉此建立依赖关系树,然后从最底层想上来执行。 1. 规则(rule) Makefile 从本质上说就是描述项目中文件依赖关系的文件。这种依赖关系的描述就是规则。Makefile的编写中的一切都是围绕规则来展开的,上面提到的四个方面:规则、变量、函数、命令都是为了规则能够方便快捷的发挥作用才引入的。 一个简单规则可以表述为: 目标文件:依赖文件(不同文件以空格分隔) <tab> 得到目标文件需要的 命令 规则的常见种类有: l Explicit Rule 最简单的rule,明确指出了目标和依赖,以及如何有依赖得到目标。举例: Hello.o:hello.cpp g++ -c hello.cpp l Pattern Rule 使用了wildcard

Makefile 使用总结

♀尐吖头ヾ 提交于 2019-12-28 07:10:06
1. Makefile 简介 Makefile 是和 make 命令一起配合使用的. 很多大型项目的编译都是通过 Makefile 来组织的, 如果没有 Makefile, 那很多项目中各种库和代码之间的依赖关系不知会多复杂. Makefile的组织流程的能力如此之强, 不仅可以用来编译项目, 还可以用来组织我们平时的一些日常操作. 这个需要大家发挥自己的想象力. 本篇博客是基于 {精华} 跟我一起写 Makefile 而整理的, 有些删减, 追加了一些示例. 非常感谢 gunguymadman_cu 提供如此详尽的Makefile介绍, 这正是我一直寻找的Makefile中文文档. 1.1 Makefile 主要的 5个部分 (显示规则, 隐晦规则, 变量定义, 文件指示, 注释) Makefile基本格式如下: target ... : prerequisites ... command ... ... 其中, target - 目标文件, 可以是 Object File, 也可以是可执行文件 prerequisites - 生成 target 所需要的文件或者目标 command - make需要执行的命令 (任意的shell命令), Makefile中的命令必须以 [tab] 开头 显示规则 :: 说明如何生成一个或多个目标文件(包括 生成的文件, 文件的依赖文件,

模块导入导出

蓝咒 提交于 2019-12-27 05:41:30
bundle 是入口 js,也就是你的 html 会直接引用的 js 文件。 chunk 是webpack依据依赖打包的懒加载js文件,我们不会直接引用,一般都是 webpack 自动加载。 导出 ES6 export // 具名导出 export var Count = 5; export function Multiply(a, b) { return a * b; } // 默认导出 export default { // Some data... }; // 直接从另一个文件导出 export * from './src/echarts'; export { default as IhrMore } from '@/components/common/more/more.vue' CommonJS module.exports调用者通过 require 对模块进行调用时返回的值(默认为一个新对象)。 module.exports = function (source, map) { this.callback( null, `export default function (Component) { Component.options.__docs = ${ JSON.stringify(source) } }`, map ) } AMD define(不能在异步函数中调用

React Hooks 学习之 useCallback实践

冷暖自知 提交于 2019-12-25 21:05:02
@React Hook ---- useCallback详解 React Hooks 学习之 useCallback实践 前言: Hook 是 React 16.8 的新增特性。它可以让你在不编写 class 的情况下使用 state 以及其他的 React 特性。 本文主要介绍React中内置的Hook API — useCallback。 在开始阅读之前,本文默认读者已对React Hook有基础了解,如果你刚开始接触 Hook,那么可能需要先查阅 Hook 概览 ,再阅读本文。 useCallback语法 const memoizedCallback = useCallback ( ( ) => { doSomething ( a , b ) ; } , [ a , b ] , ) ; 该方法返回一个 memoized(记忆化)回调函数 ,什么是记忆化函数呢?后文会就JavaScript中的Memoization做简单的介绍。 useCallback 的第一个参数是一个函数用来执行一些操作和计算。第二个参数是一个数组,当这个数组里面的值改变时 useCallback回调函数会重新执行,更新这个匿名函数里面引用到的值,当数组里面的值没有改变时,会返回该回调函数的 memoized 版本。这样描述可能有点不太好理解,下面看一个例子: 我们写一个简单的demo,

关系数据库基础理论~~

女生的网名这么多〃 提交于 2019-12-21 14:17:23
DDL:Data Definition Language,数据库模式定义语言; DML:Data Manipulation Language,数据操纵语言命令使用户能够查询数据库以及操作已有数据库中的数据; 关系范式学习: 要理解范式必须先理解一下依赖关系 1.数据依赖 数据依赖指的是通过一个关系中属性间的相等与否体现出来的数据间的相互关系,其中最重要的是函数依赖和多值依赖。 2.函数依赖 设X,Y是关系R的两个属性集合,当任何时刻R中的任意两个元组中的X属性值相同时,则它们的Y属性值也相同,则称X函数决定Y,或Y函数依赖于X。 3.平凡函数依赖 当关系中属性集合Y是属性集合X的子集时(Y?X),存在函数依赖X→Y,即一组属性函数决定它的所有子集,这种函数依赖称为平凡函数依赖。 4.非平凡函数依赖 当关系中属性集合Y不是属性集合X的子集时,存在函数依赖X→Y,则称这种函数依赖为非平凡函数依赖。 5.完全函数依赖 设X,Y是关系R的两个属性集合,X’是X的真子集,存在X→Y,但对每一个X’都有X’!→Y,则称Y完全函数依赖于X。 6.部分函数依赖 设X,Y是关系R的两个属性集合,存在X→Y,若X’是X的真子集,存在X’→Y,则称Y部分函数依赖于X。 7.传递函数依赖 设X,Y,Z是关系R中互不相同的属性集合,存在X→Y(Y !→X),Y→Z,则称Z传递函数依赖于X。 举例说明

●关系数据库基础

拥有回忆 提交于 2019-12-19 04:54:28
关系数据库的基本概念   关系:二维表   行:元组   列:属性   域:属性取值范围   关键字:唯一确定一个元组(主码)     一般显示表示形式:关系名(属性1,属性2,……属性n)       如:学生(学号,姓名,性别,年龄,学部号) 数据完整性   指数据库中数据的正确性和唯一性。   三类完整性规则:     1、实体完整性规则     2、参照完整性规则     3、用户定义的完整性规则 关系操作:选择,投影,连接   1、选择,又称为限制。i在关系中选择满足给定条件的诸元组   选择运算实际上就是从关系中选择逻辑表达式为真的元组   在关系的行的角度进行运算   逻辑表达式运算符可以是:>、<、>=、<=、!=、=   2、投影。   在关系上选择若干属性列组成新的关系   投影是在列的角度进行运算   投影操作后可能取消一些元组,因为一旦选取了特定列,可能就会产生重复的行,这些重复的行必须消除   3、连接。   通过一个关系中的某个属性等于另一个关系的某个属性作为连接条件的连接。 逻辑数据库设计   将实体和关系转化为关系模式   函数依赖型   无损分割   规范化准则 联系   事物的联系可以分为两类:一类是实体集内部的联系,表现在属性之间;另一类是实体集之间的联系,可分解为多个实体间的了联系。   两个实体间联系的类型:   1:1

不造个轮子,你还真以为你会写代码了?

帅比萌擦擦* 提交于 2019-12-18 02:21:11
作者:茄果 链接:https://zhuanlan.zhihu.com/p/24435564 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 最近在琢磨Vue的实现原理,参照着Vue捣鼓了一个轮子,一个轻量的前端MVVM框架,Vue的绑定指令基本都实现了一遍。轮子姑且叫 vueuv.js 吧,GitHub: qieguo2016/Vueuv ,欢迎围观上星星~~ MVVM原理实现非常巧妙,真心佩服作者的构思;编译部分没用源码的方式实现,自己捣鼓着实现的,过程真是既烧脑也获益良多: 不造个轮子,你还真以为你会写代码了? How to use 引入 vueuv.js 后,用法就跟Vue一毛一样了: <div id="app"> {{ message }} </div> var app = new Vue({ el: '#app', data: { message: 'Hello Vue!' } }) 渲染后的HTML是这样的: <div id="app"> Hello Vue! </div> 其他的指令也是一样的语法,更多指令请看Vue的文档 http://cn.vuejs.org/v2/guide/ , 这里就不再赘述了。现在Vueuv还没加Filter语法,另外CSS和style指令暂时只支持对象语法,数组语法还没来得及做

数据库关系模式函数依赖、键、范式的基本概念

≡放荡痞女 提交于 2019-12-17 10:17:05
首先理解几个概念, 函数依赖:设R(U)是属性集上的关系模式,X,Y是U的子集。若对于R(U)的任意一个可能的关系r,r中不能存在两个元组在X上的属性值星等,而在Y上的属性值不等,即是说这里X可以唯一确定Y,则称,X函数确定Y或Y函数依赖于X,记作X–>Y。 完全函数依赖:在R(U)中,如果X–>Y,并且对于X的任何一个真子集X‘,都有X’-/->Y,记作 X-f->Y; (f为箭头的上标) 部分函数依赖:若X–>Y,但Y不完全依赖于X,则称Y对X部分函数依赖。X-p->Y 传递函数依赖:在R(U)中,如果X–>Y(Y不真含于X,也即X不真包含Y),Y-/->X, Y–>Z,Z不真含于Y,则称Z于X传递函数依赖。记作,X-传递->Z 另外码(键)的概念,参考 https://blog.csdn.net/liushuijinger/article/details/12832017 几种范式定义: 2NF,若R属于1NF,且每一个非主属性完全函数依赖于任何一个候选码,则R属于2NF。 3NF,设关系模式R<U,F>属于1NF,若R中不存在这样的码X,属性Y以及非主属性Z(Z不真包含Y)使得X-->Y,Y-->Z成立,Y-/->X,则R<U,F>属于3NF。 BCNF,关系模式R<U,F>属于1NF,若X-->Y且Y不真包含于X时X必含有码,则R<U,F>属于BCNF

手写一个小型打包构建工具

吃可爱长大的小学妹 提交于 2019-12-16 12:11:45
通过这个工具的实现,大家可以理解到打包工具的原理到底是什么。 实现 因为涉及到 ES6 转 ES5,所以我们首先需要安装一些 Babel 相关的工具 yarn add babylon babel-traverse babel-core babel-preset-env 接下来我们将这些工具引入文件中 const fs = require('fs') const path = require('path') const babylon = require('babylon') const traverse = require('babel-traverse').default const { transformFromAst } = require('babel-core') 首先,我们先来实现如何使用 Babel 转换代码 function readCode(filePath) { // 读取文件内容 const content = fs.readFileSync(filePath, 'utf-8') // 生成 AST const ast = babylon.parse(content, { sourceType: 'module' }) // 寻找当前文件的依赖关系 const dependencies = [] traverse(ast, {