export / import 温故而知新

认知一: 导出的对象被修改,依然会影响原来的对象。

仔细想想这是理所当然的事(说明导出的依然是对象指向内存的地址,所以通常还需要结合深拷贝使用)

/**
 export const state = {
 	select: 0
 }

 export const logstate = () => {
 	console.log(‘what the fuck?‘, state)
 }
 */
import { state, logstate } from ‘./lib‘
state.select =  110
console.log(‘fuckyou‘, state) // fuckyou { select: 110 }
logstate()  // what the fuck? { select: 110 }

.highlight { padding: 15px }
td.linenos { background-color: #f0f0f0; padding-right: 10px }
span.lineno { background-color: #f0f0f0; padding: 0 5px 0 5px }
pre { line-height: 125% }
.hll { background-color: #49483e }
.c { color: #75715e }
.err { color: #960050; background-color: #1e0010 }
.k { color: #66d9ef }
.l { color: #ae81ff }
.n { color: #f8f8f2 }
.o { color: #f92672 }
.p { color: #f8f8f2 }
.ch { color: #75715e }
.cm { color: #75715e }
.cp { color: #75715e }
.c1 { color: #75715e }
.cs { color: #75715e }
.gd { color: #f92672 }
.ge { font-style: italic }
.gi { color: #a6e22e }
.gs { font-weight: bold }
.gu { color: #75715e }
.kc { color: #66d9ef }
.kd { color: #66d9ef }
.kn { color: #f92672 }
.kp { color: #66d9ef }
.kr { color: #66d9ef }
.kt { color: #66d9ef }
.ld { color: #e6db74 }
.m { color: #ae81ff }
.s { color: #e6db74 }
.na { color: #a6e22e }
.nb { color: #f8f8f2 }
.nc { color: #a6e22e }
.no { color: #66d9ef }
.nd { color: #a6e22e }
.ni { color: #f8f8f2 }
.ne { color: #a6e22e }
.nf { color: #a6e22e }
.nl { color: #f8f8f2 }
.nn { color: #f8f8f2 }
.nx { color: #a6e22e }
.py { color: #f8f8f2 }
.nt { color: #f92672 }
.nv { color: #f8f8f2 }
.ow { color: #f92672 }
.w { color: #f8f8f2 }
.mb { color: #ae81ff }
.mf { color: #ae81ff }
.mh { color: #ae81ff }
.mi { color: #ae81ff }
.mo { color: #ae81ff }
.sb { color: #e6db74 }
.sc { color: #e6db74 }
.sd { color: #e6db74 }
.s2 { color: #e6db74 }
.se { color: #ae81ff }
.sh { color: #e6db74 }
.si { color: #e6db74 }
.sx { color: #e6db74 }
.sr { color: #e6db74 }
.s1 { color: #e6db74 }
.ss { color: #e6db74 }
.bp { color: #f8f8f2 }
.vc { color: #f8f8f2 }
.vg { color: #f8f8f2 }
.vi { color: #f8f8f2 }
.il { color: #ae81ff }

认知二:无论是 let 还是 const ,导出的变量都无法修改

/**
export let val = 0
 */
import { val } from ‘./lib‘
val = 110 // 报错: "val" is read-only

td.linenos { background-color: #f0f0f0; padding-right: 10px }
span.lineno { background-color: #f0f0f0; padding: 0 5px 0 5px }
pre { line-height: 125% }
.hll { background-color: #49483e }
.c { color: #75715e }
.err { color: #960050; background-color: #1e0010 }
.k { color: #66d9ef }
.l { color: #ae81ff }
.n { color: #f8f8f2 }
.o { color: #f92672 }
.p { color: #f8f8f2 }
.ch { color: #75715e }
.cm { color: #75715e }
.cp { color: #75715e }
.c1 { color: #75715e }
.cs { color: #75715e }
.gd { color: #f92672 }
.ge { font-style: italic }
.gi { color: #a6e22e }
.gs { font-weight: bold }
.gu { color: #75715e }
.kc { color: #66d9ef }
.kd { color: #66d9ef }
.kn { color: #f92672 }
.kp { color: #66d9ef }
.kr { color: #66d9ef }
.kt { color: #66d9ef }
.ld { color: #e6db74 }
.m { color: #ae81ff }
.s { color: #e6db74 }
.na { color: #a6e22e }
.nb { color: #f8f8f2 }
.nc { color: #a6e22e }
.no { color: #66d9ef }
.nd { color: #a6e22e }
.ni { color: #f8f8f2 }
.ne { color: #a6e22e }
.nf { color: #a6e22e }
.nl { color: #f8f8f2 }
.nn { color: #f8f8f2 }
.nx { color: #a6e22e }
.py { color: #f8f8f2 }
.nt { color: #f92672 }
.nv { color: #f8f8f2 }
.ow { color: #f92672 }
.w { color: #f8f8f2 }
.mb { color: #ae81ff }
.mf { color: #ae81ff }
.mh { color: #ae81ff }
.mi { color: #ae81ff }
.mo { color: #ae81ff }
.sb { color: #e6db74 }
.sc { color: #e6db74 }
.sd { color: #e6db74 }
.s2 { color: #e6db74 }
.se { color: #ae81ff }
.sh { color: #e6db74 }
.si { color: #e6db74 }
.sx { color: #e6db74 }
.sr { color: #e6db74 }
.s1 { color: #e6db74 }
.ss { color: #e6db74 }
.bp { color: #f8f8f2 }
.vc { color: #f8f8f2 }
.vg { color: #f8f8f2 }
.vi { color: #f8f8f2 }
.il { color: #ae81ff }

认知三: import 无法解构 export default {...} 导出的对象,哪怕他真的是导出一个对象!

我们知道,如果我们用常规的 require 导入 export default {...},其实还有一层 default 的:

/**
const state = {
	select: 0
}

const logstate = () => {
	console.log(‘what the fuck?‘, state)
}

export default {
	state,
	logstate
}
 */
const what = require(‘./lib‘);
console.log(what); // { default: { state: { select: 0 }, logstate: [Function: logstate] } }

td.linenos { background-color: #f0f0f0; padding-right: 10px }
span.lineno { background-color: #f0f0f0; padding: 0 5px 0 5px }
pre { line-height: 125% }
.hll { background-color: #49483e }
.c { color: #75715e }
.err { color: #960050; background-color: #1e0010 }
.k { color: #66d9ef }
.l { color: #ae81ff }
.n { color: #f8f8f2 }
.o { color: #f92672 }
.p { color: #f8f8f2 }
.ch { color: #75715e }
.cm { color: #75715e }
.cp { color: #75715e }
.c1 { color: #75715e }
.cs { color: #75715e }
.gd { color: #f92672 }
.ge { font-style: italic }
.gi { color: #a6e22e }
.gs { font-weight: bold }
.gu { color: #75715e }
.kc { color: #66d9ef }
.kd { color: #66d9ef }
.kn { color: #f92672 }
.kp { color: #66d9ef }
.kr { color: #66d9ef }
.kt { color: #66d9ef }
.ld { color: #e6db74 }
.m { color: #ae81ff }
.s { color: #e6db74 }
.na { color: #a6e22e }
.nb { color: #f8f8f2 }
.nc { color: #a6e22e }
.no { color: #66d9ef }
.nd { color: #a6e22e }
.ni { color: #f8f8f2 }
.ne { color: #a6e22e }
.nf { color: #a6e22e }
.nl { color: #f8f8f2 }
.nn { color: #f8f8f2 }
.nx { color: #a6e22e }
.py { color: #f8f8f2 }
.nt { color: #f92672 }
.nv { color: #f8f8f2 }
.ow { color: #f92672 }
.w { color: #f8f8f2 }
.mb { color: #ae81ff }
.mf { color: #ae81ff }
.mh { color: #ae81ff }
.mi { color: #ae81ff }
.mo { color: #ae81ff }
.sb { color: #e6db74 }
.sc { color: #e6db74 }
.sd { color: #e6db74 }
.s2 { color: #e6db74 }
.se { color: #ae81ff }
.sh { color: #e6db74 }
.si { color: #e6db74 }
.sx { color: #e6db74 }
.sr { color: #e6db74 }
.s1 { color: #e6db74 }
.ss { color: #e6db74 }
.bp { color: #f8f8f2 }
.vc { color: #f8f8f2 }
.vg { color: #f8f8f2 }
.vi { color: #f8f8f2 }
.il { color: #ae81ff }
td.linenos { background-color: #f0f0f0; padding-right: 10px }
span.lineno { background-color: #f0f0f0; padding: 0 5px 0 5px }
pre { line-height: 125% }
.hll { background-color: #49483e }
.c { color: #75715e }
.err { color: #960050; background-color: #1e0010 }
.k { color: #66d9ef }
.l { color: #ae81ff }
.n { color: #f8f8f2 }
.o { color: #f92672 }
.p { color: #f8f8f2 }
.ch { color: #75715e }
.cm { color: #75715e }
.cp { color: #75715e }
.c1 { color: #75715e }
.cs { color: #75715e }
.gd { color: #f92672 }
.ge { font-style: italic }
.gi { color: #a6e22e }
.gs { font-weight: bold }
.gu { color: #75715e }
.kc { color: #66d9ef }
.kd { color: #66d9ef }
.kn { color: #f92672 }
.kp { color: #66d9ef }
.kr { color: #66d9ef }
.kt { color: #66d9ef }
.ld { color: #e6db74 }
.m { color: #ae81ff }
.s { color: #e6db74 }
.na { color: #a6e22e }
.nb { color: #f8f8f2 }
.nc { color: #a6e22e }
.no { color: #66d9ef }
.nd { color: #a6e22e }
.ni { color: #f8f8f2 }
.ne { color: #a6e22e }
.nf { color: #a6e22e }
.nl { color: #f8f8f2 }
.nn { color: #f8f8f2 }
.nx { color: #a6e22e }
.py { color: #f8f8f2 }
.nt { color: #f92672 }
.nv { color: #f8f8f2 }
.ow { color: #f92672 }
.w { color: #f8f8f2 }
.mb { color: #ae81ff }
.mf { color: #ae81ff }
.mh { color: #ae81ff }
.mi { color: #ae81ff }
.mo { color: #ae81ff }
.sb { color: #e6db74 }
.sc { color: #e6db74 }
.sd { color: #e6db74 }
.s2 { color: #e6db74 }
.se { color: #ae81ff }
.sh { color: #e6db74 }
.si { color: #e6db74 }
.sx { color: #e6db74 }
.sr { color: #e6db74 }
.s1 { color: #e6db74 }
.ss { color: #e6db74 }
.bp { color: #f8f8f2 }
.vc { color: #f8f8f2 }
.vg { color: #f8f8f2 }
.vi { color: #f8f8f2 }
.il { color: #ae81ff }

而神奇的是,如果使用 Import 就会自动将这一层多余的default移出:

import what  from ‘./lib‘
console.log(20190111214203, what) // { state: { select: 110 }, logstate: [Function: logstate] }

但尽管如此,我们依然无法使用解构:

import what  from ‘./lib‘
import { state, logstate }  from ‘./lib‘
console.log(state, logstate) // undefined undefined

td.linenos { background-color: #f0f0f0; padding-right: 10px }
span.lineno { background-color: #f0f0f0; padding: 0 5px 0 5px }
pre { line-height: 125% }
.hll { background-color: #49483e }
.c { color: #75715e }
.err { color: #960050; background-color: #1e0010 }
.k { color: #66d9ef }
.l { color: #ae81ff }
.n { color: #f8f8f2 }
.o { color: #f92672 }
.p { color: #f8f8f2 }
.ch { color: #75715e }
.cm { color: #75715e }
.cp { color: #75715e }
.c1 { color: #75715e }
.cs { color: #75715e }
.gd { color: #f92672 }
.ge { font-style: italic }
.gi { color: #a6e22e }
.gs { font-weight: bold }
.gu { color: #75715e }
.kc { color: #66d9ef }
.kd { color: #66d9ef }
.kn { color: #f92672 }
.kp { color: #66d9ef }
.kr { color: #66d9ef }
.kt { color: #66d9ef }
.ld { color: #e6db74 }
.m { color: #ae81ff }
.s { color: #e6db74 }
.na { color: #a6e22e }
.nb { color: #f8f8f2 }
.nc { color: #a6e22e }
.no { color: #66d9ef }
.nd { color: #a6e22e }
.ni { color: #f8f8f2 }
.ne { color: #a6e22e }
.nf { color: #a6e22e }
.nl { color: #f8f8f2 }
.nn { color: #f8f8f2 }
.nx { color: #a6e22e }
.py { color: #f8f8f2 }
.nt { color: #f92672 }
.nv { color: #f8f8f2 }
.ow { color: #f92672 }
.w { color: #f8f8f2 }
.mb { color: #ae81ff }
.mf { color: #ae81ff }
.mh { color: #ae81ff }
.mi { color: #ae81ff }
.mo { color: #ae81ff }
.sb { color: #e6db74 }
.sc { color: #e6db74 }
.sd { color: #e6db74 }
.s2 { color: #e6db74 }
.se { color: #ae81ff }
.sh { color: #e6db74 }
.si { color: #e6db74 }
.sx { color: #e6db74 }
.sr { color: #e6db74 }
.s1 { color: #e6db74 }
.ss { color: #e6db74 }
.bp { color: #f8f8f2 }
.vc { color: #f8f8f2 }
.vg { color: #f8f8f2 }
.vi { color: #f8f8f2 }
.il { color: #ae81ff }
td.linenos { background-color: #f0f0f0; padding-right: 10px }
span.lineno { background-color: #f0f0f0; padding: 0 5px 0 5px }
pre { line-height: 125% }
.hll { background-color: #49483e }
.c { color: #75715e }
.err { color: #960050; background-color: #1e0010 }
.k { color: #66d9ef }
.l { color: #ae81ff }
.n { color: #f8f8f2 }
.o { color: #f92672 }
.p { color: #f8f8f2 }
.ch { color: #75715e }
.cm { color: #75715e }
.cp { color: #75715e }
.c1 { color: #75715e }
.cs { color: #75715e }
.gd { color: #f92672 }
.ge { font-style: italic }
.gi { color: #a6e22e }
.gs { font-weight: bold }
.gu { color: #75715e }
.kc { color: #66d9ef }
.kd { color: #66d9ef }
.kn { color: #f92672 }
.kp { color: #66d9ef }
.kr { color: #66d9ef }
.kt { color: #66d9ef }
.ld { color: #e6db74 }
.m { color: #ae81ff }
.s { color: #e6db74 }
.na { color: #a6e22e }
.nb { color: #f8f8f2 }
.nc { color: #a6e22e }
.no { color: #66d9ef }
.nd { color: #a6e22e }
.ni { color: #f8f8f2 }
.ne { color: #a6e22e }
.nf { color: #a6e22e }
.nl { color: #f8f8f2 }
.nn { color: #f8f8f2 }
.nx { color: #a6e22e }
.py { color: #f8f8f2 }
.nt { color: #f92672 }
.nv { color: #f8f8f2 }
.ow { color: #f92672 }
.w { color: #f8f8f2 }
.mb { color: #ae81ff }
.mf { color: #ae81ff }
.mh { color: #ae81ff }
.mi { color: #ae81ff }
.mo { color: #ae81ff }
.sb { color: #e6db74 }
.sc { color: #e6db74 }
.sd { color: #e6db74 }
.s2 { color: #e6db74 }
.se { color: #ae81ff }
.sh { color: #e6db74 }
.si { color: #e6db74 }
.sx { color: #e6db74 }
.sr { color: #e6db74 }
.s1 { color: #e6db74 }
.ss { color: #e6db74 }
.bp { color: #f8f8f2 }
.vc { color: #f8f8f2 }
.vg { color: #f8f8f2 }
.vi { color: #f8f8f2 }
.il { color: #ae81ff }

如果实在想使用解构,只能用最初的require方法了,但要记得加上 .default 哦:

const { state, logstate }  = require(‘./lib‘).default
console.log(state, logstate) // { select: 0 } [Function: logstate]

td.linenos { background-color: #f0f0f0; padding-right: 10px }
span.lineno { background-color: #f0f0f0; padding: 0 5px 0 5px }
pre { line-height: 125% }
.hll { background-color: #49483e }
.c { color: #75715e }
.err { color: #960050; background-color: #1e0010 }
.k { color: #66d9ef }
.l { color: #ae81ff }
.n { color: #f8f8f2 }
.o { color: #f92672 }
.p { color: #f8f8f2 }
.ch { color: #75715e }
.cm { color: #75715e }
.cp { color: #75715e }
.c1 { color: #75715e }
.cs { color: #75715e }
.gd { color: #f92672 }
.ge { font-style: italic }
.gi { color: #a6e22e }
.gs { font-weight: bold }
.gu { color: #75715e }
.kc { color: #66d9ef }
.kd { color: #66d9ef }
.kn { color: #f92672 }
.kp { color: #66d9ef }
.kr { color: #66d9ef }
.kt { color: #66d9ef }
.ld { color: #e6db74 }
.m { color: #ae81ff }
.s { color: #e6db74 }
.na { color: #a6e22e }
.nb { color: #f8f8f2 }
.nc { color: #a6e22e }
.no { color: #66d9ef }
.nd { color: #a6e22e }
.ni { color: #f8f8f2 }
.ne { color: #a6e22e }
.nf { color: #a6e22e }
.nl { color: #f8f8f2 }
.nn { color: #f8f8f2 }
.nx { color: #a6e22e }
.py { color: #f8f8f2 }
.nt { color: #f92672 }
.nv { color: #f8f8f2 }
.ow { color: #f92672 }
.w { color: #f8f8f2 }
.mb { color: #ae81ff }
.mf { color: #ae81ff }
.mh { color: #ae81ff }
.mi { color: #ae81ff }
.mo { color: #ae81ff }
.sb { color: #e6db74 }
.sc { color: #e6db74 }
.sd { color: #e6db74 }
.s2 { color: #e6db74 }
.se { color: #ae81ff }
.sh { color: #e6db74 }
.si { color: #e6db74 }
.sx { color: #e6db74 }
.sr { color: #e6db74 }
.s1 { color: #e6db74 }
.ss { color: #e6db74 }
.bp { color: #f8f8f2 }
.vc { color: #f8f8f2 }
.vg { color: #f8f8f2 }
.vi { color: #f8f8f2 }
.il { color: #ae81ff }

原文地址:https://www.cnblogs.com/CyLee/p/10258565.html

时间: 2024-10-12 07:37:44

export / import 温故而知新的相关文章

程序间数据共享与传递:EXPORT/IMPORT、SAP/ABAP Memory

声明:原创作品,转载时请注明文章来自SAP师太技术博客:www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将追究法律责任!原文链接:http://www.cnblogs.com/jiangzhengjun/p/4293544.html EXPORT 语句... 350 IMPORT语句... 353 IMPORT DIRECTORY语句... 354 DELETE FROM语句... 355 ABAP Memory(同一用户的同一窗口Session)

(转)关于ES6的 模块功能 Module 中export import的用法和注意之处

关于ES6的 模块功能 Module 中export import的用法和注意之处 export default 的用法 export default命令用于指定模块的默认输出.显然,一个模块只能有一个默认输出,因此export deault命令只能使用一次.所以,import命令后面才不用加大括号,相反其它的export 输出 可以有多个,且import时必须加大括号,示例如下: 1 // modules.js 2 function add(x, y) { 3 return x * y; 4

PL/SQL developer export/import (转)

export/import图标为灰色:原因:相关应用程序没有关联菜单栏 --> Tools --> Import Tables... --> Oracle Import Export Executable  :   %ORACLE_HOME%\bin\imp.exe Output File : C:\Documents and Settings\Administrator\桌面\eam.dmp PL/SQL Developer是Oracle数据库中用于导入或导出数据库的主要工具,本文主要

docker export import后,导入镜像,启动时的错误,Error response from daemon: No command specified

Docker的流行与它对容器的易分享和易移植密不可分,用户不仅可以把容器提交到公共服务器上,还可以把容器导出到本地文件系统中.同样,我们也可以把导出的容器重新导入到Docker运行环境中.Docker的容器导入导出分别用import和export命令完成. 1.导出容器export 注意:export导出的是容器,不是镜像. [plain] view plain copy docker export <CONTAINER ID > > my_container.tar docker ex

Use Drush to Export/Import a Drupal MySQL Database Dump File

So today I wanted to learn how to export a Drupal database to a file quickly. Back in the day I would've logged in through cPanel and navigated to PHPMyAdmin, then manually select an export of the database and have to choose where to save the file. N

使用export/import导出和导入docker容器

1.导出容器 如果要导出本地某个容器,可以使用 docker export 命令,导出容器快照到本地文件. $ sudo docker ps -a CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                    PORTS               NAMES 7691a814370e        ubuntu:14.04        "/bi

export,import和export default的区别

首先要知道export,import ,export default是什么 ES6模块主要有两个功能:export和importexport用于对外输出本模块(一个文件可以理解为一个模块)变量的接口import用于在一个模块中加载另一个含有export接口的模块.也就是说使用export命令定义了模块的对外接口以后,其他JS文件就可以通过import命令加载这个模块(文件).这几个都是ES6的语法. export和import(一个导出一个导入) 一个a.js文件有如下代码: export va

docker save/load、export/import 区别

区别: save的对象是image,产生的文件需要用load来生成image: export的对象是container,产生的文件需要用import来生成image. save Save one or more images to a tar archive (streamed to STDOUT by default) load Load an image from a tar archive or STDIN export Export a container's filesystem as

export,import, es6 export, es6 import

创建javascript模块以从模块中导出函数.对象或原语值时,使用export语句,以便其他程序可以使用import语句. export { name1, name2, …, nameN }; export { variable1 as name1, variable2 as name2, …, nameN }; export let name1, name2, …, nameN; // also var, const export let name1 = …, name2 = …, …, n